我在創建TreeMap時遇到NullPointerException。填充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異常。
任何想法我做錯了什麼?
解決方案
正如接受的解決方案中指出的那樣。問題出在我的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;
}
stacktrace會有幫助... – 2010-11-08 11:38:23
'AccountGroupBean'重寫'hashcode()'和'equals()'嗎? – Qwerky 2010-11-08 11:42:42
你是否簡化了SO的代碼示例,並刪除了一些關鍵的東西?我能想到的具體事情是TreeMap構造函數中的一個自定義比較器,它是比較器,它正在崩潰而不是放在put上? – Rich 2010-11-08 12:00:56