如何在 Java 中定义具有多个值类型的 HashMap?

How can I define a HashMap with multiple value types in Java?

我当前的 HashMap 具有以下结构,对我来说工作正常。

Map<String, List<MyClass>> data = new HashMap<String, List<MyClass>>() {{
   put("correct", new ArrayList<MyClass>());
   put("incorrect", new ArrayList<MyClass>());
}}

尽管如此,我想将一个字符串添加到同一个HashMap。我已经尝试了以下方法,但是当我想向 ArrayList 中添加新元素时它会导致错误。

Map<String, Object> data = new HashMap<String, Object>() {{
   put("correct", new ArrayList<MyClass>());
   put("incorrect", new ArrayList<MyClass>());
   put("filestring", new String());
}}

错误:

class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader 'bootstrap')

我尝试将新元素添加到 ArrayList 的方式:

((Set<List<MyClass>>) data.get("correct")).add((List<MyClass>) new MyClass());

有谁知道我怎样才能达到上述目标?我非常感谢任何形式的帮助,干杯!

您为密钥“正确”存储的内容是 new ArrayList<MyClass>():

   put("correct", new ArrayList<MyClass>());

但是在读回它时,您尝试将其转换为 (Set<List<MyClass>>),但这是行不通的。

稍后以类似的方式尝试强制转换 (List<MyClass>) new MyClass(),这也会失败。

要添加新元素,您需要编写

((List<MyClass>) data.get("correct")).add(new MyClass());