我在查看一个项目时发现了这句话,我正试图弄清楚它是如何工作的。
private Map<String, Map<String, List>> bank;
我有一些使用地图的经验,但当我看到这条线时,我有点困惑。该项目由使用枚举对象组成。
创建的枚举对象的一个示例是:
a2("Distinct", "adjective", "Familiar. Worked in Java.")
另一个例子是:
a3("Distinct", "adjective", "Unique. No duplicates. Clearly different or of a different kind.")
我知道地图是如何工作的(如果我错了,请纠正我(。在这种情况下,单词"Distinct"被映射到词性(映射到包含同一单词定义的列表(。
我的主要问题是,这怎么是一个有效的语句,以及为什么语法与通常创建地图不同,比如:
Map<String, String> myMap = new HashMap<String, String>();
任何帮助都会很好,非常感谢。
Map<String, List<String>> map = new HashMap<>();
这只是一个将字符串与字符串列表相关联的映射。类似key <-> value1, value2, value3
要在那里添加值,只需使用
map.computeIfAbsent("key", o->new ArrayList<>()).add("value1");
map.computeIfAbsent("key", o->new ArrayList<>()).add("value2");
map.computeIfAbsent("key", o->new ArrayList<>()).add("value3");
如果你想有3个字符串相关联,比如"Distinct", "adjective", "Familiar. Worked in Java."
,可以考虑使用map of maps
:
Map<String, Map<String, List<String?>> map = new HashMap<>();
要在其中设置值,请使用以下构造:
map.computeIfAbsent("Distinct", k->new HashMap<>()).computeIfAbsent("adjective", k->new ArrayList<>()).add("Familiar. Worked in Java.")
map.computeIfAbsent("Distinct", k->new HashMap<>()).computeIfAbsent("adjective", k->new ArrayList<>()).add("Unique. No duplicates. Clearly different or of a different kind.")
参见规范和Baeldung的操作方法