下面有一个简单的代码,当我在列表中循环时,ArrayList迭代器返回null。有没有人知道什么可以导致迭代器返回null?不幸的是我没有实际数据,因为这只发生在其他手机上,我不知道allDisplayNames中有什么,但我知道列表已初始化,因为我检查它不等于null。 提前谢谢!
以下是代码:
HashMap<Integer, List<String>> allDisplayNames = Contact
.getAllFullnames();
...
for (Contact contact : Application.getContacts().values()) {
...
ArrayList<String> namechunks = new ArrayList<String>();
List<String> displaynames = new ArrayList<String>();
displaynames.add(contact.getDisplay_name());
if (allDisplayNames.get(contact.getId()) != null) {
displaynames.addAll(allDisplayNames.get(contact.getId()));
}
for (String string : displaynames) {
if (string==null) {
continue;
}
String[] temp = string.split(" "); <-- this line used to trigger NullPointer
...
}
答案 0 :(得分:0)
此处,异常位于String[] temp = string.split(" ");
表示string
为空。所以ArrayList也包含空值。
可能的解决方案是,不要将空值添加到ArrayList,或将空检查更改为
if (string.equals(null)) {
continue;
}