EnumMap 或 HashMap(如果查找键是字符串)
2022-09-01 13:25:46
我试图权衡使用一个.由于,我将永远使用a查找,似乎带有键的a将是正确的选择。但是,似乎更好的设计,因为它传达了我将键限制为特定枚举的意图。思潮?EnumMap
HashMap
String
HashMap
String
EnumMap
这是一个虚构的例子,展示了我将如何使用: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