大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: EnumMap

EnumMap是个专为枚举型别设计的类,方便您使用枚举型别及Map对象,直接来举个实例:
  • EnumMapDemo.java
package onlyfun.caterpillar;

import java.util.*;

enum Action {TURN_LEFT, TURN_RIGHT, SHOOT}

public class EnumMapDemo {
public static void main(String[] args) {
Map<Action, String> map =
new EnumMap<Action, String>(Action.class);

map.put(Action.TURN_LEFT, "向左转");
map.put(Action.TURN_RIGHT, "向右转");
map.put(Action.SHOOT, "射击");

for(Action action : Action.values( ) ) {
System.out.println(map.get(action));
}
}
}

执行结果:
向左转
向右转
射击


与单纯的使用HashMap比较起来的差别是,在上面的程序中,EnumMap将根据枚举的顺序来维护对象的排列顺序,从下面这个程序可以看个大概:
  • EnumMapDemo2.java
package onlyfun.caterpillar;

import java.util.*;

enum Action {TURN_LEFT, TURN_RIGHT, SHOOT}

public class EnumMapDemo2 {
public static void main(String[] args) {
Map<Action, String> map =
new EnumMap<Action, String>(Action.class);

map.put(Action.SHOOT, "射击");
map.put(Action.TURN_RIGHT, "向右转");
map.put(Action.TURN_LEFT, "向左转");

for(String value : map.values( )) {
System.out.println(value);
}
}
}

执行结果:
向左转
向右转
射击


从遍访的结果可以看出,对象的顺序是根据枚举顺序来排列的。