//String转Integer
String s = "100";
int intValue = Integer.parseInt(s);
//截取字符串
s.substring(0, 6)
StringBuff
//JAVA中的String是不可修改的,需要用的StringBuffer
//假如在一个回溯中需要修改String
void dfs(String digits, int pos, StringBuffer work_string){
if(pos == digits.length()){
//StringBuffer转String
res.add(work_string.toString());
return;
}
char digit = digits.charAt(pos);
String letters = phoneMap.get(digit);
for(int i = 0; i < letters.length(); i++){
//添加字符
work_string.append(letters.charAt(i));
dfs(digits, pos + 1, work_string);
//删除字符
work_string.deleteCharAt(pos);
}
}
//倒置StringBuffer
StringBuffer s = new StringBuffer();
s = s.reverse();
堆、优先队列
最小堆
PriorityQueue<Integer> maxHeap = new PriorityQueue<>());
最大堆
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Comparator.reverseOrder());
插入
add(element);
弹出
poll(element);
查看队头
peek();
大小
size();
判空
isEmpty();
实现自定义类的堆
class myClass{
int num, cnt;
myClass(int num, int cnt){
this.num = num;
this.cnt = cnt;
}
}
class myComparator implements Comparator<myClass> {
public int compare(myClass a, myClass b) {
// 逆序,即最大堆
return Integer.compare(b.cnt, a.cnt);
}
}
PriorityQueue<myClass> maxHeap = new PriorityQueue<>(new myComparator());
数组
#返回两个数字i,j组成的数组
return new int[]{i, j};
#排序
Arrays.sort(tmp);
#自定义数组排序
Arrays.sort(intervals, new Comparator<int[]>() {
public int compare(int[] interval1, int[] interval2) {
return interval1[0] - interval2[0];
}
});
List
//创建二维列表
List<List<Integer>> result = new ArrayList<List<Integer>>();
或者
List<List<Integer>> result = new ArrayList<>();
错误用法:
在Java中,List是一个引用类型,当你执行result.add(tmp);时,实际上将tmp的引用添加到result中。由于Java中引用传递的性质,tmp之后发生的任何修改都会影响到result中已经添加的引用。
应用result.add(new ArrayList<>(tmp));