- A+
所属分类:其他教程
文章目录[隐藏]
- EnumMap
- EnumSet
EnumMap和EnumSet都是定义在java集合中的类。在这篇文章中,我们将了解EnumMap和EnumSet的区别。EnumMap是Map接口的专门实现,EnumSet是Set接口的专门实现。它们之间存在着一些差异。所以我们下面来看看EnumMap和EnumSet之间的区别。
EnumMap
EnumMap是Map接口的一个专门实现,用于枚举类型。它实现了Map接口并扩展了Java中的AbstractMap。
- EnumMap比HashMap快得多。
- EnumMap类是Java集合框架的一个成员。
- EnumMap是一个有序的集合,按照其键的自然顺序进行维护。
- 每个EnumMap实例的所有键必须是相同枚举类型的键。
- EnumMap不允许插入空键,如果我们试图插入空键,它将抛出
NullPointerException
。 - EnumMap内部表示为数组以获得更好的性能。
下面是EnumMap的实现 -
// Java program to illustrate working of EnumMap import java.util.*; class EnumMapExample { public enum Fruits { Apple, Mango, Orange, Banana; } public static void main(String[] args) { // Creating an EnumMap of the Fruits enum EnumMap<Fruits, Integer> enumMap = new EnumMap<>(Fruits.class); // Insert using put() method enumMap.put(Fruits.Apple, 1); enumMap.put(Fruits.Mango, 2); enumMap.put(Fruits.Orange, 3); enumMap.put(Fruits.Banana, 4); // Printing size of EnumMap System.out.println("Size of EnumMap: " + enumMap.size()); // Printing the EnumMap for (Map.Entry m : enumMap.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } } }
运行结果:
Size of EnumMap: 4 Apple 1 Mango 2 Orange 3 Banana 4
EnumSet
EnumSet是Set接口的一个专门实现,用于枚举类型。它实现了Set接口并扩展了Java中的AbstractSet。
- EnumSet类是Java集合框架的一个成员,它不是同步的。
- EnumSet中的所有元素都必须来自一个枚举类型,这个枚举类型在创建集合时被明确或隐含地指定。
- EnumSet比HashSet快得多。
- EnumSet不允许插入空对象,如果我们试图插入空对象,它将抛出
NullPointerException
。
下面是EnumSet的实现:
// Java program to demonstrate the EnumSet import java.util.*; class enumSetExample { enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday } public static void main(String args[]) { // Creating an EnumSet EnumSet<Days> days = EnumSet.of(Days.Monday, Days.Tuesday); Iterator<Days> itr = days.iterator(); // Iterate and print elements to the console System.out.println("EnumSet : "); while (itr.hasNext()) { System.out.println(itr.next()); } } }
运行结果:
EnumSet : Monday Tuesday
EnumMap和EnumSet的区别
EnumMap | EnumSet |
---|---|
EnumMap是Map接口的一个专门实现,用于枚举类型。 | EnumSet是Set接口的一个专门实现,用于枚举类型。 |
EnumMap内部表示为一个数组。 | EnumSet内部表示为一个BitVector。 |
EnumMap不允许插入空键,但是可以插入空值。 | EnumSet不允许插入空元素。 |
EnumMap不是一个抽象的类。 | EnumSet是一个抽象类。 |
EnumMap不是一个抽象类,因此,我们可以创建这个类的实例。 | EnumSet是一个抽象类,因此,我们不能创建这个类的实例。 |
- 我的微信公众号
- 扫一扫关注
- 我的新浪微博号
- 扫一扫关注