我尝试从地图填充列表。如果列表是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)
假设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元素,允许您向其中添加新元素。