我尝试转换Map<String,ArrayList<Object>
&gt;使用以下代码发送到ArrayList<Object>
:
Collection<ArrayList<Object>> coll = map().values();
List list = new ArrayList(coll);
ArrayList<Object> arrayList = new ArrayList<>(list.size());
arrayList.addAll(list);
然而,我得到的arraylist仍然按键分组对象仍然是集合。
如何转换为单独ArrayList
的{{1}}?
答案 0 :(得分:2)
您可以使用Java 8 Stream
s:
List<Object> list = map.values().stream()
.flatMap(ArrayList::stream)
.collect(Collectors.toList());
如果没有Stream
,您就必须遍历第一个List
的元素,并分别为每个元素调用arrayList.addAll()
。
答案 1 :(得分:0)
非流版本将是:
List<Object> accumulator = new ArrayList<>();
for(ArrayList<Object> a : map.values())
accumulator.addAll(a);
答案 2 :(得分:0)
通过使用以下传统方法也可以实现相同的结果 -
Map<String, ArrayList<Object>> map = new HashMap<>();
ArrayList<Object> objects1 = new ArrayList<>();
objects1.add("data1");
objects1.add("data2");
objects1.add("data3");
map.put("key1", objects1);
ArrayList<Object> objects2 = new ArrayList<>();
objects2.add("data1");
objects2.add("data2");
objects2.add("data3");
map.put("key2", objects2);
Collection<ArrayList<Object>> collections = map.values();
List<Object> list = new ArrayList<>();
for(ArrayList<Object> collection : collections) {
for(Object obj : collection) {
list.add(obj);
}
}
System.out.println(list);
它会将输出打印为:
[data1,data2,data3,data1,data2,data3]