首页 文章资讯内容详情

我们可以在Java中将空元素添加到Set中吗?

2026-06-04 1 花语

集合是一个不能包含重复元素的集合。它为数学集合抽象建模。

它不允许重复的元素,并且最多允许一个空值。

Set还为equals和hashCode操作的行为增加了更紧密的约定,从而即使它们的实现类型不同,也可以有意义地比较Set实例。

实现此接口的类共有三个-

HashSet-基于哈希表设置实现。

LinkedHashSet-基于链表的HashSet实现。

TreeSet-基于树设置实现。

Set对象中的空值

根据定义,一个set对象不允许重复值,但最多允许一个空值。

HashSet中的空值-HashSet对象允许空值,但是,您只能向其中添加一个空元素。尽管您尝试打印其内容时添加了更多的空值,但它仅显示一个空值。

示例

import java.util.HashSet; import java.util.Set; public class HashSetExample { public static void main(String args[]) { Set<Integer> hashSet = new HashSet<Integer>(); //Populating the HashSet hashSet.add(1124); hashSet.add(3654); hashSet.add(7854); hashSet.add(9945); System.out.println(hashSet); //Adding null elements hashSet.add(null); hashSet.add(null); hashSet.add(null); System.out.println(hashSet); } }

输出结果

[1124, 3654, 9945, 7854] [null, 1124, 3654, 9945, 7854]

LinkedHashSet中的空值:与HashSet对象一样,它也允许空值,但是,您只能向其中添加一个空元素。尽管您尝试打印其内容时添加了更多的空值,但它仅显示一个空值。

示例

import java.util.LinkedHashSet; import java.util.Set; public class LinkedHashSetExample { public static void main(String args[]) { Set<Integer> linkedHashSet = new LinkedHashSet<Integer>(); //Populating the HashSet linkedHashSet.add(1124); linkedHashSet.add(3654); linkedHashSet.add(7854); linkedHashSet.add(9945); System.out.println(linkedHashSet); //Adding null elements linkedHashSet.add(null); linkedHashSet.add(null); linkedHashSet.add(null); System.out.println(linkedHashSet); } }

输出结果

[1124, 3654, 9945, 7854] [null, 1124, 3654, 9945, 7854]

TreeSet中的空值-TreeSet对象不允许空值,但是,如果尝试添加空值,则会在运行时异常生成。

示例

import java.util.Set; import java.util.TreeSet; public class TreeSetExample { public static void main(String args[]) { Set<Integer> treeSet = new TreeSet<Integer>(); //Populating the HashSet treeSet.add(1124); treeSet.add(3654); treeSet.add(7854); treeSet.add(9945); System.out.println(treeSet); //Adding null elements treeSet.add(null); treeSet.add(null); treeSet.add(null); System.out.println(treeSet); } }

运行时异常

[1124, 3654, 7854, 9945] Exception in thread "main" java.lang.NullPointerException at java.util.TreeMap.put(Unknown Source) at java.util.TreeSet.add(Unknown Source) at MyPackage.TreeSetExample.main(TreeSetExample.java:16)