如何在 Java 中的地图中插入三重项?

Vla*_*ric 0 java collections hashmap linkedhashmap data-structures

因此,主要思想是创建例如:

Map<Map<String, String>, Integer> map = new LinkedHashMap<>();
Run Code Online (Sandbox Code Playgroud)

我需要在这张地图中放置例如项目:

{{France=Paris}=12, {Spain=Madrid}=2, ... }
Run Code Online (Sandbox Code Playgroud)

如何制作这个?如何实现“放置”功能? map.put("France","Paris",2)不起作用。

Arv*_*ash 6

您需要先创建一个Map(例如Map.of("France", "Paris"))并将其放入更大的Map.

请按以下步骤操作:

import java.util.LinkedHashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<Map<String, String>, Integer> map = new LinkedHashMap<>();
        map.put(Map.of("France", "Paris"), 2);
        System.out.println(map);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

{{France=Paris}=2}
Run Code Online (Sandbox Code Playgroud)

或者,

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<Map<String, String>, Integer> map = new LinkedHashMap<>();
        Map<String, String> data = new HashMap<>();
        data.put("France", "Paris");
        map.put(data, 2);
        System.out.println(map);
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:正如Mureinik已经提到的,将可变对象作为映射中的键(替代解决方案)很容易出错。您可以查看此答案以获取解释。