从地图填充列表是否有更优雅的解决方案?

v_s*_*ner 4 java

我尝试从地图填充列表。如果列表是NULL我将创建一个新列表并添加一个新创建的元素,否则将此元素添加到现有列表中。

我想知道在 JAVA8 中是否有更优雅的解决方案。任何帮助表示赞赏。

Map<String, List<MyObject>> myMap = new HashMap<>();
List<MyObject> list = myMap.get("key");
myMap.put("key", list == null ? Arrays.asList(new MyObject()) : Arrays.asList(list, new MyObject()));
Run Code Online (Sandbox Code Playgroud)

Jac*_* G. 7

假设Arrays.asList(list, new MyObject())应该向 中添加一个新MyObject实例list,那么是的,您可以使用它Map#computeIfAbsent来使代码更具可读性:

Map<String, List<MyObject>> myMap = new HashMap<>();
myMap.computeIfAbsent("key", key -> new ArrayList<>()).add(new MyObject());
Run Code Online (Sandbox Code Playgroud)

如果"key"中的键不存在Map,则将创建一个映射到一个新ArrayList实例(返回)。否则,List调用 将返回现有computeIfAbsent元素,允许您向其中添加新元素。