java - 填充 TreeMap 会抛出 NullPointerException

标签 java treemap

我在创建 TreeMap 时收到 NullPointerException。

这是我的代码:

public TreeMap<AccountGroupBean,List<AccountBean>> getAccountsAndGroups() throws SessionExpiredException {
    TreeMap<AccountGroupBean,List<AccountBean>> map = new TreeMap<AccountGroupBean,List<AccountBean>>();
    List<AccountGroupBean> groups = getAccountGroups();
    for(AccountGroupBean group : groups) {
        List<AccountBean> accounts = getAccountsByGroupId(group.getId());
        System.out.println("PRINT"+ accounts.size());           
        map.put(group,accounts);
        System.out.println("!" +map.get(group).size());
    }
    return map;
}

第一个 println 打印 44。也就是说它不为空。但是,第二个 println 引发了 null 异常。

知道我做错了什么吗?

解决方案

AS 指出了公认的解决方案。问题出在我对 compareTo 的实现中。

我曾经有过:

public int compareTo(AccountGroupBean o) {
    return (number > o.getNumber()) ? 1 : -1;       
}

添加 0 返回解决了这个问题:

public int compareTo(AccountGroupBean o) {
    if(number == o.getNumber()) {
         return 0;
    }
    return (number > o.getNumber()) ? 1 : -1;       
}

最佳答案

我看起来像 AccountGroupBean 没有以正确的方式实现 Comparable,尝试 println group.compareTo(group) 来检查是否它打印 0

关于java - 填充 TreeMap 会抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123426/

相关文章:

java - 我需要与许多其他对象共享一个对象——我读过关于单例的投诉,那么我应该使用什么来代替?

在列表之间传输数据的Java函数?

java - 语言理论 - 循环不变量 - 前置/后置条件

java - 检查 FileInputStream 是否关闭的最佳方法是什么?

java - TreeMap 到 ArrayList Java

java - 从构造函数中抛出未处理的异常时会发生什么

java - 搜索 arrayLists 的映射树

使用 TreeMap 时的 Java "cannot cast to Comparable"

javascript - d3.js 树状图新数据不渲染