ITEEDU

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);
		}
	}
}

执行结果:

向左转
向右转
射击

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