这有点说不过去,但我该如何填补呢?
Map<Integer,ArrayList<Integer>>intMap = new HashMap<Integer, ArrayList<Integer>>();
我已经尝试过了
intMap.put(1, 2);
intMap.put(1, 3); etc
和
intMap.put(1, (2, 3);
最佳答案
您应该使用Map.computeIfAbsent
:
intMap.computeIfAbsent(someKey, k -> new ArrayList<>()).add(someValue);
例如,具有以下映射:
1 -> [2, 3]
5 -> [8]
6 -> [7, 9, 4]
您可以这样进行:
intMap.computeIfAbsent(1, k -> new ArrayList<>()).add(2);
intMap.computeIfAbsent(1, k -> new ArrayList<>()).add(3);
intMap.computeIfAbsent(5, k -> new ArrayList<>()).add(8);
intMap.computeIfAbsent(6, k -> new ArrayList<>()).add(7);
intMap.computeIfAbsent(6, k -> new ArrayList<>()).add(9);
intMap.computeIfAbsent(6, k -> new ArrayList<>()).add(4);
编辑:
Map.computeIfAbsent
等效于以下代码:List<Integer> list = intMap.get(someKey);
if (list == null) {
list = new ArrayList<>();
intMap.put(someKey, list);
}
list.add(someValue);