刷题过程中的API新解

来源:互联网 发布:sky 拆分 知乎 编辑:程序博客网 时间:2024/06/08 08:43

java

集合操作

map.values()获得value的集合  return collection
list.add(int,T) 可以在给定id位置插入元素

result.add(new ArrayList(res));用result.add(res);得到的是空的;

map.getOrDefault(node.val, 0)它不仅仅在“键”没找到的时候返回提供的默认值,而且还会将键和默认值增加到调用的map中。


LinkedList 由链表构成,在第一位插入addFirst(x);


Queue<String> queue = new LinkedList();queue.offer()

List<String> queue = new LinkedList();queue.offer()错误;虽然也可以当作队列用;

cannot find symbol: method offer(String)

优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。

PriorityQueue是从JDK1.5开始提供的新的数据结构接口。

如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列。

自己提供Comparator

PriorityQueue<ListNode> pq = new PriorityQueue(new Comparator<ListNode>(){         @Override        public int compare(ListNode c1, ListNode c2) {            return (int) (c1.val - c2.val);        }    });




Arrays操作

Array.toString方法当接受的数组中还有数组时打印出的仅是该内嵌数组的名字,Array.deepToString方法会将内嵌数组的内容也打印出来,不管数组内嵌多少层,都会循环递归到最内层的数据.

数组

new int[2];这样new一个数组时,其中每个值均为0;如果想得到一个空数组,就return new int[0] 而不是return null


String

String.substring() 不是String.subString();


StringBuffer.append() 参数有很多形式,int char 都可以,不只是string


Math

Math.abs():   

public static double abs(double a)

public static int abs(int a)
传什么类型的参数,得到的就是他的返回值

java.lang.Math.abs(int a)返回一个int值的绝对值。如果参数为负,则返回该参数。如果参数为负,则返回否定的参数。
请注意,如果该参数为相等于Integer.MIN_VALUE,表示的最小负int值的值,其结果是相同的值,且为负。

所以在29题中,将int形的除数被除数转换为绝对值时,要防止他们越界即MIN_VALUE,所以需要转为long形

int 是四个字节,所以范围在2^31-1~~ -2^31     2147483647~ - 2147483648


小技巧

当你需要表示一个特殊状态时,可以用一个除了那种状态不会得到的值来表征。比如是数字时返回数字值,那么不是数字时我可以用-1来表示。

原创粉丝点击