Can we add null elements to a Set in Java?
集合是一个不能包含重复元素的集合。它为数学集合抽象建模。
它不允许重复的元素,并且最多允许一个空值。
Set还为equals和hashCode操作的行为增加了更紧密的约定,允许Set实例进行有意义的比较,即使它们的实现类型不同。
实现此接口的类共有三个-
- HashSet?设置基于哈希表的实现。
- LinkedHashSet?基于链表的HashSet实现。
- TreeSet?设置基于树的实现。
Set对象中的空值
根据定义,设置对象不允许重复值,但最多允许一个空值。
HashSet中是否为空值? HashSet对象允许使用null值,但是您只能向其中添加一个null元素。尽管您尝试打印其内容时添加了更多的空值,但它仅显示一个空值。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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); } } |
输出量
1 2 | [1124, 3654, 9945, 7854] [null, 1124, 3654, 9945, 7854] |
LinkedHashSet中的空值:与HashSet对象一样,它也允许空值,但是,您只能向其中添加一个空元素。尽管您尝试打印其内容时添加了更多的空值,但它仅显示一个空值。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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); } } |
输出量
1 2 | [1124, 3654, 9945, 7854] [null, 1124, 3654, 9945, 7854] |
Null值在TreeSet中? TreeSet对象不允许使用空值,但是,如果尝试添加它们,则将在运行时异常生成。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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); } } |
运行时异常
1 2 3 4 5 | [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) |