在 Java 中,Set 是否能存储 null 值,取决于具体使用的 Set 实现类。
| Set 实现类 | 是否允许 null |
说明 |
|---|---|---|
| HashSet | ✅ 允许(最多一个 null) |
基于 HashMap,可以存一个 null |
| LinkedHashSet | ✅ 允许(最多一个 null) |
继承 HashSet,行为相同 |
| TreeSet | ❌ 不允许 null |
基于 TreeMap,需要比较元素,存 null 会抛 NullPointerException |
| EnumSet | ❌ 不允许 null |
元素必须是枚举常量 |
| ConcurrentHashMap.KeySetView(并发 Set) | ❌ 不允许 null |
并发集合一般都不允许 null |
Set<String> hashSet = new HashSet<>();
hashSet.add(null); // OK
hashSet.add(null); // 仍只有一个 null
Set<String> treeSet = new TreeSet<>();
treeSet.add(null); // 运行时抛 NullPointerException
HashSet / LinkedHashSet:可以存一个 nullTreeSet、EnumSet、大多数并发 Set:不能存 null如果你是在做并发编程或排序需求,选择 Set 时要特别注意这一点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。