arraylist允许存储多个null值,add()不拒绝null;get()返回null需手动判空防npe;contains(null)和remove(null)用==判断;遍历时需显式处理null避免异常。

ArrayList 允许存储 null 值,它本身对 null 没有特殊限制或拦截——你可以正常添加、获取、删除甚至多次插入 null 元素。关键在于你如何使用它,以及是否在业务逻辑中主动处理这些 null。
添加 null 元素完全合法
ArrayList 的 add() 方法不会拒绝 null:
ArrayList<string> list = new ArrayList();
list.add("hello");
list.add(null); // ✅ 合法
list.add(null); // ✅ 可重复添加
list.add("world");
System.out.println(list); // [hello, null, null, world]</string>
读取时需显式判空,避免 NPE
调用 get(i) 可能返回 null,后续若直接调用方法(如 .length()、.equals())会触发 NullPointerException:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 安全做法:先检查是否为
null - 错误示例:
if (list.get(1).length() > 0) {...}→ 运行时报错 - 正确示例:
String s = list.get(1); if (s != null && s.length() > 0) {...}
查找和删除 null 要用 == 而非 equals
ArrayList.contains(null) 和 remove(null) 内部使用 == 判断,这是符合预期的设计(因为 equals(null) 总是返回 false):
-
list.contains(null)→ 返回true(只要存在引用为null的元素) -
list.remove(null)→ 删除第一个null元素(只删一个) - 想删所有
null?用removeIf(Objects::isNull)
遍历时注意 null 的存在
增强 for 循环或 Stream 处理中,null 会照常参与迭代:
-
for (String s : list) { System.out.println(s.hashCode()); }→ 遇到null就崩 - 推荐写法:
for (String s : list) { if (s != null) System.out.println(s.hashCode()); } - Stream 中可用
.filter(Objects::nonNull)提前过滤
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










