Java 集合最大 NullPointerException

3 java collections max nullpointerexception java-8

我在 DataUtils.java 类中有 java 1.8.0_171 和以下代码:

List<BigDecimal> list = new ArrayList<>();
list.add(new BigDecimal(0));
list.add(new BigDecimal(-2));
list.add(new BigDecimal(10));
list.add(new BigDecimal(200));

if ((Collections.max(list).subtract(Collections.min(list)).compareTo(new BigDecimal(0)) != 0)) {
    .....
            } 
Run Code Online (Sandbox Code Playgroud)

我有以下例外:

com.util.DataUtils.calculateRetsentindex(DataUtils.java:23) 处的 java.util.Collections.max(Unknown Source) 处的线程“main”java.lang.NullPointerException 中的异常

Eclipse 上的默认 jdk 设置正确,clean-rebuild 无法修复。请指教

Ves*_*dov 5

这意味着在您的集合中您可能添加了一个空元素。在你的例子中:

 List<BigDecimal> list = new ArrayList<>();
          list.add(new BigDecimal(0));
          list.add(new BigDecimal(-2));
          list.add(new BigDecimal(10));
          list.add(new BigDecimal(200));
          if ((Collections.max(list).subtract(Collections.min(list)).compareTo(new BigDecimal(0)) != 0)) {
                System.out.println("OK");
          } 
Run Code Online (Sandbox Code Playgroud)

它正确打印“OK”。如果您将第一个对象更改为 null:

list.add(null);
Run Code Online (Sandbox Code Playgroud)

你得到了与你类似的例外。

如果你这样做,Collections.max(null);你会得到完全相同的例外。所以我猜你的列表在你打电话时没有初始化。