我試圖衡量使用EnumMap
優於HashMap
的優點和缺點。因爲,我會一直使用String
查找,似乎HashMap
與String
鍵將是正確的選擇。然而,EnumMap
似乎更好的設計,因爲它傳達了我的意圖,以限制鍵到一個特定的枚舉。思考?EnumMap或HashMap如果查找鍵是一個字符串
這是一個虛構的例子,顯示我如何將使用Map
:
enum AnimalType { CAT, DOG }
interface Animal {}
class Cat implements Animal {}
class Dog implements Animal {}
public class AnimalFactory {
private static final Map<AnimalType, Animal> enumMap
= new EnumMap<AnimalType, Animal>(AnimalType.class);
// versus
private static final Map<String, Animal> stringMap
= new HashMap<String, Animal>();
static {
enumMap.put(AnimalType.CAT, new Cat());
enumMap.put(AnimalType.DOG, new Dog());
stringMap.put("CAT", new Cat());
stringMap.put("DOG", new Dog());
}
public static Animal create(String type) {
Animal result = enumMap.get(AnimalType.valueOf(type));
Animal result2 = stringMap.get(type);
return result;
}
}
假設AnimalType
枚舉和地圖將只能由AnimalFactory
可用於創建動物和其他地方。
Map
我應該使用哪種?
@dogbane有什麼進展? – Javanator