我试着从地图上填满清单。 如果列表是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()));
假设arrays.asList(list,new MyObject())
应该向list
添加一个新的MyObject
实例,那么是的,您可以使用Map#ComputeIfAbsent
使代码更具可读性:
Map<String, List<MyObject>> myMap = new HashMap<>();
myMap.computeIfAbsent("key", key -> new ArrayList<>()).add(new MyObject());
如果“key”
在映射
中不作为键存在,则将创建到新的ArrayList
实例(返回)的映射。 否则,现有的list
将由对ComputeIfAbsent
的调用返回,从而允许您向其中添加新元素。
您可以简单地确保您的get在一开始就不会返回null:
List<MyObject> list = myMap.getOrDefault("key", new ArrayList<>);
然后你就会以
List<MyObject> list = myMap.getOrDefault("key", new ArrayList<>);
list.add(new MyObject());
myMap.put("key", list);