用java刷算法题的时候会用到一些常用的方法,这些方法包括字符串、数组、集合的方法。
Java获取数组的长度1
2
3
4
5
6
7String[][] data = new String[2][5];
System.out.println("第一维数组长度: " + data.length);
System.out.println("第二维数组长度: " + data[0].length);
// 字符数组转成字符串
char[] ch = {'a', 'b', 'c'};
String str = new String(ch);
String类常用方法
- int length() 返回字符串长度
- char charAt(int index) 返回指定下标位置的字符
- char[] toCharArray() 将字符串转换为字符数组
- String[] split(String regex) 将字符串按照分割符分割成字符串数组
- Boolean equals(String str) 判断字符串是否相等
- String substring(int beginIndex, int endIndex) 截取字符串(不包括endIndex)
- String substring(int beginIndex) 截取字符串(包括beginIndex)StringBuffer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15String str = "Hello world!";
String str1 = "yun";
int l = str.length(); // l:12
char c = str.charAt(1); // c:'e'
char[] cArray = str.toCharArray();
// cArray:['H','e','l','l','o',' ','w','o','r','l','d','!']
String[] arr = str.split(" ");
// arr:["Hello","world!"]
Boolean eq = str1.equals(str); // eq:false
String str2 = str.substring(0, 2); // str2:"He"
String str3 = str.substring(2); // str3:"llo world!"
StringBuffer 类和 String 类最大的区别在于它的内容和长度都是可以改变的。StringBuffer 类似一个字符容器,当在其中添加或删除字符时,所操作的都是这个字符容器,因此并不会产生新的 StringBuffer 对象。所以当要处理字符串增、删、改操作时一般都是将String类对象转换成StringBuffer 类对象然后再转换成字符串作为返回值。StringBuffer类常用方法1
2
3
4
5
6// 初始化StringBuffer 类对象(第一种)
StringBuffer strBuffer = new StringBuffer("abc");
// 初始化StringBuffer 类对象(第二种)
String str = "abc";
StringBuffer strBuffer = new StringBuffer(str); - int length() 返回字符串实际长度
- char charAt(int index) 返回指定下标位置的字符
- StringBuffer append(char c) 添加字符到StringBuffer对象中末尾
- StringBuffer append(String str) 添加字符串到StringBuffer对象中末尾
- StringBuffer insert(int offset, String str) 在StringBuffer对象中的offset位置插入字符串str
- StringBuffer deleteCharAt(int index) 移除StringBuffer对象中指定位置的字符
- StringBuffer delete(int start, int end) 删除StringBuffer对象中指定范围的字符或字符串,区间[start,end)
- StringBuffer replace(int start, int end, String s) 将StringBuffer对象中指定范围的字符或字符串用新的字符串s进行替换,区间[start, end)
- void setCharAt(int index, char ch) 修改指定位置index处的字符
- String toString() 返回StringBuffer缓冲区中的字符串对象
- StringBuffer reverse() 将此StringBuffer对象用其反转形式取代 注:java的String和StringBuffer两个类来封装对字符串的各种操作,存放于java.lang包中,java.lang 包下的类不用导包,在运行时,java.lang包下的类默认导入。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15String str = "Hello world!";
StringBuffer strBuffer = new StringBuffer(str);
strBuffer.insert(1, "ttt"); // strBuffer:"Htttello world!"
strBuffer.delete(1, 4); // strBuffer:"Hello world!"
strBuffer.deleteCharAt(1); // strBuffer:"Hllo world!"
strBuffer.setCharAt(1, 't'); // strBuffer:"Htlo world!"
strBuffer.replace(0, 2, "Hel"); // strBuffer:"Hello world!"
/****************测试append()***************/
StringBuffer sBuffer = new StringBuffer("aaa"); // sBuffer:aaa
sBuffer.append('b'); // sBuffer:aaab
sBuffer.append("ccc"); // sBuffer:aaabccc
String str = "ddd";
sBuffer.append(str); // sBuffer:aaabcccddd
List容器常用方法 - add(Object element) 向列表的尾部添加指定的元素
- add(int index, Object element) 在列表的指定位置插入指定元素
- size() 返回列表中的元素个数
- get(int index) 返回列表中指定位置的元素,index从0开始
- set(int i, Object element) 将索引i位置元素替换为元素element并返回被替换的元素
- clear() 从列表中移除所有元素
- isEmpty() 判断列表是否包含元素,不包含元素则返回 true,否则返回false
- remove(int index) 移除列表中指定位置的元素,并返回被删元素
将数组转成list集合:1
2String[] array = { "a", "b", "c"};
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(array));
Stack容器常用方法
- Boolean empty() 若栈为空则返回true,否则返回false
- E peek() 查看当前的栈顶元素
- E pop() 删除当前的栈顶元素,并将其作为返回值返回
- E push(E e) 添加该数据到栈顶
PriorityQueue容器常用方法
- offer(E e) 将指定元素插入此优先队列
- poll() 移除并返回堆顶元素
- peek() 获取堆顶元素
- size() 返回元素个数
- clear() 清空
offer()方法和add()方法的区别:两者都是往队列尾部插入元素,不同的是,当超出队列界限的时候,add()方法是抛出异常让你处理,而offer()方法是直接返回false
PriorityQueue初始化时默认创建的是小根堆,所以创建大根堆的方法为:1
PriorityQueue<Integer> q = new PriorityQueue<>((o1, o2) -> (o2 - o1));
ArrayDeque容器常用方法
- offer() - 将指定的元素插入ArrayDeque双端队列的末尾
- offerFirst() - 在ArrayDeque双端队列的开始处插入指定的元素
- offerLast() - 将指定的元素插入ArrayDeque双端队列的末尾
- getFirst() - 返回ArrayDeque双端队列的第一个元素
- getLast() - 返回ArrayDeque双端队列的最后一个元素
- peek() - 返回ArrayDeque双端队列的第一个元素
- peekFirst() - 返回ArrayDeque双端队列的第一个元素(等效于peek())
- peekLast() - 返回ArrayDeque双端队列的最后一个元素
- poll() - 返回并删除ArrayDeque双端队列的第一个元素
- pollFirst() - 返回并删除ArrayDeque双端队列的第一个元素(等效于poll())
- pollLast() - 返回并删除ArrayDeque双端队列的最后一个元素
- size() - 返回ArrayDeque双端队列的长度
Map容器常用方法
- V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null
- V put(K key, V value) 在容器中新增键值对,若存在相同的键则覆盖原来的值,返回原来的值
- V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除,返回移除的值,不存在则返回null
- Boolean containsKey(Object key) 如果 Map包含指定键的映射,则返回 true
- V getOrDefault(Object key, V defaultValue) 当Map集合中有这个key时,就返回key对应的值,如果没有就返回默认值defaultValue。
- Set
keySet() 返回此映射中包含的键的Set集合
Map容器的迭代操作:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Map<String, String> map = new HashMap<String, String>();
map.put("一", "one");
map.put("二", "two");
// 获取key的set集合
Set<String> keySet = map.keySet();
// 创建迭代器
Iterator<String> it = keySet.iterator();
while(it.hasNext()) {
//获取每一个key
String key = it.next();
//通过key获取对应的value
String value = map.get(key);
System.out.println(key+"="+value);
}