跳转至

List 可以加 null 吗?迭代器可以迭代 null 吗?

一、List 可以加 null

List<String> list = new ArrayList<>();
list.add(null);   // ✅
list.add(null);   // ✅ 可以加多个

二、为什么可以

List 不限制元素是否为 null。

三、迭代器迭代 null

List<String> list = new ArrayList<>();
list.add("a");
list.add(null);
list.add("b");

for (String s : list) {
    System.out.println(s);   // a, null, b
}

迭代器返回 null,不会抛异常。

四、注意

  • 用 for-each 要判空,否则 NPE。
  • list.get(0) 是 null,用之前判空。

五、Set 呢

Set<String> set = new HashSet<>();
set.add(null);   // ✅ HashSet 允许一个 null
set.add(null);   // 不增加

TreeSet 不允许 null(要排序,不能比较)。

六、Map 呢

  • HashMap:key 一个 null,value 多个 null。
  • TreeMap:key 不能 null。

一句话

除了 TreeSet/TreeMap,大多数集合都允许 null。