为什么用这种语法格式化这个map语句



我在查看一个项目时发现了这句话,我正试图弄清楚它是如何工作的。

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的操作方法

最新更新