我有这段代码:
private static void computeMapAddition(Map<String, List<XXX>> objectMap,
XXX objectToAdd, String key) {
if (objectMap.containsKey(key)) {
List<XXX> objectList = objectMap
.get(key);
objectList.add(objectToAdd);
} else {
List<XXX> objectList = new ArrayList<>();
objectList.add(objectToAdd);
objectMap.put(key, objectList);
}
}
此代码的作用:
1)如果map包含key然后检索值 - 这是List - 并将元素添加到该列表(它可以有很多元素)
2)如果map不包含键,则创建新列表,将元素添加到新创建的列表中并将其(键,值)放入地图
有没有办法使用Java 8减少冗长?
答案 0 :(得分:2)
java 8将computeIfAbsent
添加到Map
接口。它完全符合您的要求:
// return the list if already present or make a new one, insert into the map
// and return the newly created one
List<XXX> objectList = objectMap.computeIfAbsent(key, k -> new ArrayList<>());
// add new object to list
objectList.add(objectToAdd);
或者您可以将它们组合在一起
objectMap.computeIfAbsent(key, k -> new ArrayList<>()).add(objectToAdd);