1.判断两个数组相等
Arrays.equals(a, b)
若要求两个数组乱序相等可以先排序
Arrays.sort(arr1);
Arrays.sort(arr2);
return Arrays.equals(arr1,arr2);
2.判断两个列表乱序相等
Collections.sort(one);
Collections.sort(two);
one.equals(two);
3.列表去重
List<String> myList = list.stream().distinct().collect(Collectors.toList());
// Set去重并保持原先顺序的两种方法
public static void delRepeat(List<String> list) {
//方法一
List<String> listNew = new ArrayList<String>(new TreeSet<String>(list));
//方法二
List<String> listNew = new ArrayList<String>(new LinkedHashSet<String>(list));
}
4.新建队列
Queue<Integer> queue = new LinkedList<>();//声明队列
queue.add(1);//添加数据
queue.offer(1);//添加数据
queue.poll();//输出队列
queue.peek();//输出队列但不删除
queue.remove();//输出队列
//在队列元素为空的情况下,remove() 方法会抛出NoSuchElementException异常,poll() 方法只会返回 null
offer,add 区别:
一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。
这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。
poll,remove 区别:
remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。
peek,element区别:
element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。
有序队列
Queue<Integer> queString = new PriorityQueue<>();//插入的数据会被排序
5.新建栈
Stack stack = new Stack();
Stack<String> stackString = new Stack<>();
stackString.pop();//输出元素,栈为空的时候会抛出异常
stackString.add();//添加元素
stackString.push();//添加元素
//add是继承自Vector的方法,且返回值类型是boolean。
//push是Stack自身的方法,返回值类型是参数类类型
6.新建Map
Map<String,String> map = new HashMap();//创建map
for(Map.Entry<String,String> entry : map.entrySet()){
System.out.println(entry.getValue());
System.out.println(entry.getKey());
}
//Map.Entry 是Map中的一个接口,他的用途是表示一个映射项(里面有Key和Value)
//Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>表示一个映射项的Set。
//Map.Entry里有相应的getKey和getValue方法,即JavaBean,让我们能够从一个项中取出Key和Value。
7.java中Arrays.sort()的几种用法
降序排列
Arrays.sort(arr,Collections.reverseOrder());
需要注意的是 不能使用基本类型(int,double, char),如果是int型需要改成Integer,float要改成Float
8.初始化一个指定大小的list
List list = Arrays.asList(new String[10]);
9.计算二维数组a[i][j]的i和j
i = a.length
j = a[0].length
10.res.add(list)和res.add(new ArrayList (list) )的区别
res.add(list)为浅拷贝,后续list内容的变化会导致res的变化,在原来地址改变数据,内容肯定会被改变
res.add(new ArrayList(list))为深拷贝,对象中开辟一个新地址,存放的内容为list链表,所以后续不会被影响。
11.int转long Long型
Long l = (Long)5;
上述代码是错误的,因为Long是包装类,而int是值类型数据,两者是不能强转。
long l = (long)5;
Long l = new Long((long)5);
12.int转char
char c = (char)i;//错误,会乱码
正确的方式:
char c = Character.forDigit(i,10);
char forDigit(int digit,int radix)
radix确定基数,确定是多少进制,从0到9,再从a到z(大小写不敏感),最少是二进制(MIN_RADIX),最多是三十六(10+26=36)进制(MAX_RADIX)。
char c = String.valueOf(i).charAt(0);
char c = (char)('0' + i);
char c = (char)(48+ i);