Java:Map(三)——EnumMap:Key是枚举类型
HashMap通过计算Key的hashCode(),直接定位到Value在内部数组的索引,所以效率很⾼。
Key是枚举类型的Map:EnumMap
如果Key是enum类型,那么就可以使⽤Java集合库提供的⼀种EnumMap,它在内部以⼀种紧凑的数组存储Value,并且根据enum类型
的Key直接定位到内部数组索引,且不需要计算hashCode(),效率⾼且没有空间浪费。
例⼦
假设有⼀个枚举类DayOfWeek:
enum DayOfWeek {
SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY;
}
利⽤这个枚举类实现⼀个EnumMap:
import java.util.*;
public class Main {
public static void main(String[] args) {
enum c++Map <DayOfWeek,String> map = new EnumMap<> (DayOfWeek.class);
map.put(DayOfWeek.MONDAY, "星期⼀");
map.put(DayOfWeek.TUESDAY, "星期⼆");
map.put(DayOfWeek.WEDNESDAY, "星期三");
map.put(DayOfWeek.THURSDAY, "星期四");
map.put(DayOfWeek.FRIDAY, "星期五");
map.put(DayOfWeek.SATURDAY, "星期六");
map.put(DayOfWeek.SUNDAY, "星期⽇");
System.out.println(map);
System.out.(DayOfWeek.MONDAY));
}
}
{SUNDAY=星期⽇, MONDAY=星期⼀, TUESDAY=星期⼆, WEDNESDAY=星期三, THURSDAY=星期四, FRIDAY=星期五, SATURDAY=星期六}
星期⼀
使⽤EnumMap时,我们总是⽤Map接⼝来引⽤它(正如上⽂代码中标红的部分)。因此,实际上可以把HashMap与EnumMap互换(指的是对EnumMap调⽤HashMap的⽅法),在客户端看来没有任何区别。
⼩结
如果Map的Key是enum类型,推荐使⽤EnumMap,既保证速度⼜不浪费控件。
使⽤EnumMap时,根据⾯向抽象编程原则,应使⽤Map接⼝。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。