在开发当中,有时候我们需要查找List中的最大值,最小值。虽然可以自己写代码遍历,但是有轮子可用的情况下,直接用轮子方便的多。
在Java中使用Collections查找List中最大值、最小值如下:
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(5);
list.add(8);
Integer max = Collections.max(list);
Integer min = Collections.min(list);
System.out.println("max:" + max);
System.out.println("min:" + min);
}
打印结果:
max:8
min:1
注意:
在使用上述方法时候,必须确认你的List里面没有元素为null,不然会出现空指针异常。
修改代码如下,list里面人为插入一个null:
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(5);
list.add(8);
// 这里插入一个null
list.add(null);
Integer max = Collections.max(list);
Integer min = Collections.min(list);
System.out.println("max:" + max);
System.out.println("min:" + min);
}
打印结果:
Exception in thread "main" java.lang.NullPointerException
at java.util.Collections.max(Collections.java:673)
at ztt.json.JsonTest.main(JsonTest.java:32)
可以看到,出现了空指针异常。
查看源码,我们可以看到,max方法里面有遍历操作,在拿到元素(next)后,并没有做任何的非null判断,所以,如果我们的List里面有null值存在,在执行到
next.compareTo(candidate) > 0
时,就会出现空指针异常。