这取决于 具体使用的 Set 实现类,不同实现规则不一样:
nullHashSet
✅ 允许存 一个 null
Set<String> set = new HashSet<>();
set.add(null); // OK
set.add(null); // 会被去重
LinkedHashSet
✅ 允许存 一个 null
Set<String> set = new LinkedHashSet<>();
set.add(null); // OK
nullTreeSetnull(否则会抛 NullPointerException)Set<String> set = new TreeSet<>();
set.add(null); // NullPointerException
原因:
TreeSet依赖元素的 自然排序或 Comparator,而null无法比较大小。
| Set 实现类 | 是否允许 null |
|---|---|
| HashSet | ✅ 允许(最多一个) |
| LinkedHashSet | ✅ 允许(最多一个) |
| TreeSet | ❌ 不允许 |
如果你愿意,我可以帮你分析 为什么 TreeSet 设计为不允许 null 或 面试中常考的点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。