1.数组
1.1 数组的初始化
int[] a = {0, 1, 2}; // 含有3个元素的数组,元素分别是0, 1, 2
int[] b = new int[3]; // 含有3个元素的数组,元素的值均为0
1.2 数组常用API
- 属性
length
:返回数组长度,注意不加小括号 Arrays.sort()
:数组排序- 规定[1, n]进行排序:
Arrays.sort(a, 1, n + 1);
- 降序:
Arrays.sort(a, Collections.reverseOrder());
- 规定[1, n]进行排序:
Arrays.binarySearch(int[] a, int key)
:查找元素在数组中的索引(二分查找法:保证数组的元素是排好序的)Arrays.equals(int[] a, int[] b)
:比较两个数组内容是否相同,返回true
或false
Arrays.fill(int[] a, int val)
:填充数组Arrays.toString()
:将数组转化为字符串Arrays.deepToString()
:将多维数组转化为字符串- 数组不可变长
- 使用
Arrays
需要import java.util.Arrays
2.String
类
2.1 String
方法
length()
:返回长度split(String regex)
:根据规则,分割字符串charAt(int index)
:返回指定索引处的值indexOf(char c)
、indexOf(String str)
、lastIndexOf(char c)
、lastIndexOf(String str)
:查找,找不到返回-1equals()
:判断两个字符串是否相等,注意不能直接用==compareTo()
:判断两个字符串的字典序大小,负数表示小于,0表示相等,正数表示大于startsWith()
:判断是否以某个前缀开头endsWith()
:判断是否以某个后缀结尾trim()
:去掉首尾的空白字符toLowerCase()
:全部用小写字符toUpperCase()
:全部用大写字符replace(char oldChar, char newChar)
:替换字符replace(String oldRegex, String newRegex)
:替换字符串substring(int beginIndex)
:返回从beginIndex
开始到字符串末尾的子串substring(int beginIndex, int endIndex)
:返回[beginIndex, endIndex)
中的子串toCharArray()
:将字符串转化成字符数组
2.2 StringBuilder
、StringBuffer
String
不能被修改,如果打算修改字符串,可以使用StringBuilder
和StringBuffer
。StringBuffer
线程安全,速度较慢;StringBuilder
线程不安全,速度较快。- 初始化:
StringBuilder sb = new StringBuilder("Hello")
或StringBuilder sb = new StringBuilder()
- 拼接字符串:
append(String str)
- 翻转字符串:
reverse()
- 返回长度:
length()
- 把
StringBuilder
转换为String
:toString()
3.函数
- 引用传递:数组、
StringBuilder
4.集合
4.1 List
接口:java.util.List<>
实现:
java.util.ArrayList<>
:变长数组java.util.LinkedList<>
:双链表
函数:
add()
:在末尾添加一个元素clear()
:清空size()
:返回长度isEmpty()
:是否为空get(i)
:获取第i个元素set(i, val)
:将第i个元素设置为val
remove(i)
:将第i个元素删除List
进行升序排序:Collections.sort(list);
4.2 栈
类:java.util.Stack<>
函数:
push()
:压入元素pop()
:弹出栈顶元素,并返回栈顶元素peek()
:返回栈顶元素size()
:返回长度empty()
:栈是否为空clear()
:清空
4.3 队列
接口:java.util.Queue<>
实现:
java.util.LinkedList<>
:双链表java.util.PriorityQueue<>
:优先队列- 默认是小根堆,大根堆写法:
new PriorityQueue<>(Collections.reverseOrder())
函数:
add()
:在队尾添加元素remove()
:删除并返回队头isEmpty()
:是否为空size()
:返回长度peek()
:返回队头clear()
:清空
4.4 Set
接口:java.util.Set<K>
实现:
java.util.HashSet<K>
:哈希表java.util.TreeSet<K>
:平衡树
函数:
add()
:添加元素contains()
:是否包含某个元素remove()
:删除元素size()
:返回元素数isEmpty()
:是否为空clear()
:清空
java.util.TreeSet
多的函数:
ceiling(key)
:返回大于等于key
的最小元素,不存在则返回null
floor(key)
:返回小于等于key
的最大元素,不存在则返回null
4.5 Map
接口:java.util.Map<K, V>
实现:
java.util.HashMap<K, V>
:哈希表java.util.TreeMap<K, V>
:平衡树
函数:
put(key, value)
:添加关键字和其对应的值(若关键字已存在,则替换对应的值)get(key)
:返回关键字对应的值containsKey(key)
:是否包含关键字remove(key)
:删除关键字size()
:返回元素数isEmpty()
:是否为空clear()
:清空entrySet()
:获取Map
中的所有对象的集合Map.Entry<K, V>
:Map
中的对象类型getKey()
:获取关键字getValue()
:获取值
java.util.TreeMap<K, V>
多的函数:
ceilingEntry(key)
:返回大于等于key
的最小元素,不存在则返回null
floorEntry(key)
:返回小于等于key
的最大元素,不存在则返回null