Map中使用Enum作为Key 在Java中,我们可以使用Enum作为Map的键。这样可以很方便地将Enum和对应的值进行关联。 importjava.util.HashMap;importjava.util.Map;publicclassEnumMapExample{publicstaticvoidmain(String[]args){Map<Weekday,String>schedule=newHashMap<>();schedule.put(Weekday.MONDAY,"Meeting");schedule...
是的,Java Enum类可以用作Map的键。由于枚举常量是唯一且有限的,因此它们非常适合用作键。枚举类型的键还可以提供更好的类型安全性和代码可读性。以下是一个示例: import java.util.HashMap; import java.util.Map; enum Color { RED, GREEN, BLUE; } public class Main { public static void main(String[]...
使用EnumMap时,我们总是用Map接口来引用它(正如上文代码中标红的部分)。因此,实际上可以把HashMap与EnumMap互换(指的是对EnumMap调用HashMap的方法),在客户端看来没有任何区别。 小结 如果Map的Key是enum类型,推荐使用EnumMap,既保证速度又不浪费控件。 使用EnumMap时,根据面向抽象编程原则,应使用Map接口。
枚举类型:Java中的枚举类型(enum)也可以作为Map的键。 使用原始类型的包装类作为Map的键 基本类型(如int、double等)不能直接作为Map的键,但它们的包装类可以。例如: importjava.util.HashMap;importjava.util.Map;publicclassExample{publicstaticvoidmain(String[]args){Map<Integer,String>map=newHashMap<>();ma...
EnumMap类继承自AbstractMap类,并且使用枚举类型作为其key(键)类型。keySet()方法是从AbstractMap接口中继承而来的方法,返回一个Set类型的值,包含此映射中所有key(键)的集合。在EnumMap中,它返回一个枚举类型的元素集合。因为EnumMap要求键必须是枚举类型,所以其keySet()方法返回的集合中元素的类型也是枚举类型。如果对...
在Java编程语言中,使用EnumMap是一种非常常见的技术。EnumMap是一个高度优化和高效的map实现,它使用枚举作为key,枚举常量的数量是固定的,所以EnumMap不会像普通HashMap一样有多余的开销,从而可以提供比HashMap更快的执行效率。接下来谈一下在Java中使用EnumMap。
Java:Map(三)——EnumMap:Key是枚举类型 Java:Map(三)——EnumMap:Key是枚举类型 HashMap通过计算Key的hashCode(),直接定位到Value在内部数组的索引,所以效率很⾼。Key是枚举类型的Map:EnumMap 如果Key是enum类型,那么就可以使⽤Java集合库提供的⼀种EnumMap,它在内部以⼀种紧凑的数组存储Value,...
EnumSet<Test07Enum> range = EnumSet.range(Test07Enum.UP, Test07Enum.SKIP); System.out.println(range); System.out.println("EnumMap==="); //EnumMap: key是枚举 类型 : 参数是枚举 的class类型 EnumMap<Test07Enum,String> map = new EnumMap<>(Test07Enum.class); map.put(Test07Enum.UP,"...
Enum是所有 Java 语言枚举类型的公共基本类(注意Enum是抽象类),以下是它的常见方法: 这里主要说明一下ordinal()方法,该方法获取的是枚举变量在枚举类中声明的顺序,下标从0开始,如日期中的MONDAY在第一个位置,那么MONDAY的ordinal值就是0,如果MONDAY的声明位置发生变化,那么ordinal方法获取到的值也随之变化,注意在大...
EnumMap EnumMap是枚举的专属map,效率比通常的HashMap更高。EnumMap只能接收同一枚举类型的实例作为键值且不能为null,通过ordinal方法(声明枚举对象的顺序的索引)获取枚举key对应的数组下标。在使用上EnumMap和HashMap区别不大,只是key全部为枚举类型的实例,看下get方法:public V get(Object key) { // 保证...