EnumMap 和 HashMap 都是实现了 Map 接口的类。但它们之间存在一些差异。因此,我们整理了 EnumMap 和 HashMap 之间的区别。
1. EnumMap: EnumMap 是专门为枚举类型实现的 Map 接口的专用类。它继承自 AbstractMap 并实现了 Java 中的 Map 接口。以下是 EnumMap 的几个要点:
- EnumMap 类是 Java 集合框架的成员,并且它不是同步的。
- EnumMap 是一个有序集合,并且它们按照键的自然顺序维护(键的自然顺序是指在枚举类型内部声明枚举常量的顺序)。
- EnumMap 比 HashMap快得多。
- 每个 EnumMap 实例的所有键必须是来自同一枚举类型的键。
- EnumMap 不允许插入 null 键,如果我们尝试插入 null 键,它将抛出 NullPointerException。
- EnumMap 内部通过数组表示,因此它提供了更好的性能。
EnumMap 演示:
Java
CODEBLOCK_d546b279
Output
Size of EnumMap: 4
Sunday 1
Monday 2
Tuesday 3
Wednesday 4
2. HashMap: HashMap 是一个实现了 Map 接口的类。它以键和值对的形式存储数据,其中键应该是唯一的。如果您尝试插入重复的键,它将替换相应键的元素。它允许存储 null 键和 null 值,但应该只有一个 null 键和多个 null 值。Java HashMap 类似于 HashTable,但是它是不同步的。HashMap 不维护顺序,这意味着它不保证元素的任何特定顺序。
HashMap 演示:
Java
CODEBLOCK_e404d24c
Output
Size of map is: 3
20 Ram
10 Geeks
30 Shyam
EnumMap 和 HashMap 之间的区别
HashMap
—
在 HashMap 中,我们可以使用 Enum 以及任何其他对象作为键。
它允许存储 null 键和值,但应该只有一个 null 键对象,并且可以有任意数量的 null 值。
HashMap 内部使用 HashTable。
HashMap 的性能略低于 EnumMap。
在 HashMap 中,键没有顺序。
HashMap 使用 hashCode() 来存储键,因此可能发生冲突。