Java 如何在HashMap中保存枚举类?

Java 如何在HashMap中保存枚举类?,java,dictionary,enums,hashmap,Java,Dictionary,Enums,Hashmap,假设我们有以下枚举: public enum AnimalImages { TIGER,BEAR,WOLF; } public enum CarImages { BMW,VW,AUDI; } 现在我想将这些枚举类保存在HashMap中: Map<String,Enum<?>> enumMap=new HashMap<String,Enum<?>>(); enumMap.put("AnimalImages",???????); Map>();

假设我们有以下枚举:

public enum AnimalImages {
TIGER,BEAR,WOLF;
}

public enum CarImages {
BMW,VW,AUDI;
}
现在我想将这些枚举类保存在HashMap中:

Map<String,Enum<?>> enumMap=new HashMap<String,Enum<?>>();
enumMap.put("AnimalImages",???????);
Map>();
enumMap.put(“动物图像”);

我应该输入什么来代替问号?

要明确回答您的问题,您必须将枚举值如下所示:

Map<String,Enum<?>> enumMap=new HashMap<String,Enum<?>>();
enumMap.put("AnimalImages", AnimalImages.TIGER);

另一种缩短签名的方法是:

Map<String, Object> enumMap = new HashMap<String,Object>();
enumMap.put("AnimalImages", AnimalImages.values());
enumMap.put("CarImages", CarImages.values());
Map enumMap=newhashmap();
enumMap.put(“animalages”,animalages.values());
enumMap.put(“CarImages”,CarImages.values());
在此评论中指出的另一种方式,您可以使用:

Map<String, Collection<? extends Enum<?>>> enumMap = new HashMap<>();
enumMap.put("AnimalImages", Arrays.asList(AnimalImages.values()));
enumMap.put("CarImages", Arrays.asList(AnimalImages.values()));

Map回答您的问题:

enumMap.put("AnimalImages", AnimalImages.WOLF);
enumMap.put("Cars", CarImages.AUDI);
但你也可以这样做

Map<String, AnimalImages> enumMap = new HashMap<String, AnimalImages>();
Map enumMap=newhashmap();

通过这种方式
enumMap.get(“AnimalImages”)
,您不必键入check并强制转换它。

如果需要创建包含给定
enum
的所有值的
Map
,我将使用
字符串
键到值的映射:

Map>();
enumMap.put(“animalages”,EnumSet.allOf(animalages.class));
enumMap.put(“CarImages”,EnumSet.allOf(CarImages.class));

对于(Map.entry你想在一个键后存储给定
enum
的所有值,或者你想做什么?一个enum?……最终目的是什么?这应该由enum自己处理吗?Mich助记符:这正是我想要的!@HakanKiyar你想在enum-Map中存储你所有的enum作为键和键吗值作为值?为什么不使用
Map@bali182是的,它也是有效的。现在更新。
Map<String, AnimalImages> enumMap = new HashMap<String, AnimalImages>();
Map<String, EnumSet<?>> enumMap = new HashMap<String, EnumSet<?>>();
enumMap.put("AnimalImages", EnumSet.allOf(AnimalImages.class));
enumMap.put("CarImages", EnumSet.allOf(CarImages.class));

for (Map.Entry<String, EnumSet<?>> e : enumMap.entrySet()) {
    System.out.println(String.format("key: [%s], values: %s", 
        e.getKey(), e.getValue().toString()));
}