如何在java中为单个键添加多个值

Ock*_*Ock 2 java

如何创建可以扩展其值列表的地图.例如,我有一个地图,其中包含:键A和值列表B {1,2,3}.然后在程序运行期间的某个时刻,我想添加更多值,例如:4到列表B.现在我的新地图应该是:(A,{1,2,3,4}).我怎样才能做到这一点?

das*_*ght 12

由于Map<K,V>将一个键映射到一个值,因此您需要V使用以下类型List<T>:

Map<String,List<Integer>> multiMap = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

拥有类似类型的一个结果是,现在将项添加到键的过程包括两个步骤:您必须检查键的列表是否存在,然后将新项添加到现有列表,或添加包含单个项目的新列表:

List<Integer> current = multiMap.get(key);
if (current == null) {
    current = new ArrayList<Integer>();
    multiMap.put(key, current);
}
current.add(val);
Run Code Online (Sandbox Code Playgroud)

如果使用Java 8,则可以computeIfAbsent大大简化代码:

multiMap.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用更新的`computeIfAbsent`方法简化实现:`multiMap.computeIfAbsent(key,k - > new ArrayList <>()).add(value);` (4认同)