在Java中,HashMap
是一种键值对集合,而ArrayList
是一种动态数组。当你有一个包含HashMap
的ArrayList
时,你可能会遇到迭代问题,特别是当HashMap
中的键或值是引用类型时。
当你尝试迭代包含链接的HashMap
的ArrayList
时,可能会遇到以下问题:
HashMap
中的链接为空,访问时会导致空指针异常。Iterator
进行安全迭代import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
map1.put("key1", "http://example.com");
list.add(map1);
Iterator<Map<String, String>> iterator = list.iterator();
while (iterator.hasNext()) {
Map<String, String> map = iterator.next();
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
}
}
}
Stream API
进行迭代import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
map1.put("key1", "http://example.com");
list.add(map1);
list.stream().forEach(map -> {
map.forEach((key, value) -> {
System.out.println("Key: " + key + ", Value: " + value);
});
});
}
}
在迭代过程中,检查链接是否为空,避免空指针异常。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
map1.put("key1", "http://example.com");
list.add(map1);
Iterator<Map<String, String>> iterator = list.iterator();
while (iterator.hasNext()) {
Map<String, String> map = iterator.next();
for (Map.Entry<String, String> entry : map.entrySet()) {
if (entry.getValue() != null) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
} else {
System.out.println("Key: " + entry.getKey() + ", Value is null");
}
}
}
}
}
通过以上方法,你可以安全地迭代包含链接的HashMap
的ArrayList
,并处理可能的空链接问题。
领取专属 10元无门槛券
手把手带您无忧上云