From Gossip@Openhome

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

執行結果:
向左轉
向右轉
射擊


從遍訪的結果可以看出,物件的順序是根據列舉順序來排列的。