相关文章推荐
千杯不醉的仙人球  ·  smtp relay server ...·  1 年前    · 
心软的蟠桃  ·  mysql列反转Pivoting - ...·  1 年前    · 
瘦瘦的仙人球  ·  c# - How can I make ...·  1 年前    · 

EnumMap HashMap 都是Java中的Map实现,但它们之间存在一些关键区别。

  1. 键的类型:在HashMap中,键可以是任何哈希码的实例(实现了 hashCode() 方法),而在EnumMap中,键必须是枚举类型。
  2. 性能:EnumMap的性能通常优于HashMap,特别是在对大量数据进行查找时。这是因为在EnumMap中,键值对是按键的顺序存储的,因此查找操作的时间复杂度可以保持在O(1)。而在HashMap中,查找操作的时间复杂度是O(1)(在最佳情况下)到O(n)(在最坏情况下)。
  3. 内存使用:EnumMap使用更多的内存,因为它需要存储枚举类型和对应的值。HashMap使用的内存较少,因为它只需要存储键值对。
  4. Null keys:HashMap允许使用null作为键,而EnumMap不允许。
  5. Null values:HashMap允许使用null作为值,而EnumMap也允许。
  6. 遍历:在遍历操作中,EnumMap通常比HashMap慢,因为它需要遍历更多的元素。

选择使用哪种类型的Map取决于你的具体需求。如果你需要一个键是枚举类型的Map,并且性能是关键考虑因素,那么应该选择EnumMap。如果你需要一个键可以是任何类型的Map,并且内存使用是关键考虑因素,那么应该选择HashMap。

自定义 枚举 Enu m 是否可以作为 HashMap key ?针对这个问题,我们的答案是肯定的,至于为什么我们做如下分析。1、 Enu m 为常量 自定义的 枚举 类为常量,我们说一个类为常量,就像是 java .lang.String 类一样,属于final的类。2、自定义测试 Enu m 类/** * Created by wangyingjie1 on 2016/11/7. public e
文章目录1、String Split2、String Equals3、Adding Strings4、List.Count() Vs List.Count Vs List.Any() 1、String Split 在C#中,共有10个Split 的重载方法 大多数开发人员使用如下方法: var str = "Akshay|Patel"; Stopwatch sw = new Stopwatch(); sw.St
Enu mMap 源码分析 Enu mMap 是与 枚举 类相结合的 Map 类。跟hash没有多大关系,虽然本文中另外两种与 HashMap 有关,但是 Enu mMap HashMap 关系并不大。 Enu mMap 就是专门与 枚举 类结合形成 Map key -value对结构。值的注意的是, Enu mMap 中虽然也存储的是 key -value对的数据,但是内存实现上却采用的是数组结构。 key 存储一个数组结构,val
map Enu mMap 是指将一个普通的 Map 转换成 Enu mMap 。转换时需要保证 Map key 值是 枚举 类型,否则 抛出ClassCastException异常。转换的方法是使用 Enu mMap 的构造函数,将 Map 作为参数传入即可。转换后的 Enu mMap key 值只能是 枚举 类型的 枚举 值,而且 按照 枚举 值的自然顺序排序。下面是一个示例代码: Map <String, String> map = new HashMap <>(); map .put("SPRING", "春天"); map .put("SUMMER", "夏天"); map .put("FALL", "秋天"); map .put("WINTER", "冬天"); Enu mMap <Season, String> enu mMap = new Enu mMap <>(Season.class); for ( Map .Entry<String, String> entry : map .entrySet()) { Season season = Season.valueOf(entry.get Key ()); enu mMap .put(season, entry.getValue()); System.out.println( enu mMap ); 这段代码将一个普通的 Map 转换成了 Enu mMap ,并且按照 枚举 值的自然顺序排序输出了结果。