如何创建可以扩展其值列表的地图.例如,我有一个地图,其中包含:键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)
| 归档时间: |
|
| 查看次数: |
7718 次 |
| 最近记录: |