Java 从映射转换为arraylist
我尝试使用以下代码将Java 从映射转换为arraylist,java,Java,我尝试使用以下代码将映射转换为ArrayList: Collection<ArrayList<Object>> coll = map().values(); List list = new ArrayList(coll); ArrayList<Object> arrayList = new ArrayList<>(list.size()); arrayList.addAll(list); Collection coll=map().values(
映射转换为ArrayList
:
Collection<ArrayList<Object>> coll = map().values();
List list = new ArrayList(coll);
ArrayList<Object> arrayList = new ArrayList<>(list.size());
arrayList.addAll(list);
Collection coll=map().values();
列表=新的ArrayList(coll);
ArrayList ArrayList=新的ArrayList(list.size());
arrayList.addAll(列表);
但是,我得到的arraylist仍然按键将对象分组为集合
如何将单独的对象
s转换为ArrayList
您可以使用Java 8Stream
s:
List<Object> list = map.values().stream()
.flatMap(ArrayList::stream)
.collect(Collectors.toList());
List List=map.values().stream()
.flatMap(ArrayList::stream)
.collect(Collectors.toList());
如果没有Stream
s,您必须迭代第一个列表中的元素,并分别为每个元素调用arrayList.addAll()
。非流版本将是:
List<Object> accumulator = new ArrayList<>();
for(ArrayList<Object> a : map.values())
accumulator.addAll(a);
列表累加器=新的ArrayList();
for(ArrayList a:map.values())
累加器。addAll(a);
同样的结果也可以通过使用以下传统方法实现-
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);
Map Map=newhashmap();
ArrayList objects1=新的ArrayList();
对象1.添加(“数据1”);
对象1.添加(“数据2”);
对象1.添加(“数据3”);
map.put(“键1”,objects1);
ArrayList objects2=新的ArrayList();
对象2.添加(“数据1”);
对象2.添加(“数据2”);
对象2.添加(“数据3”);
map.put(“键2”,objects2);
集合集合=map.values();
列表=新的ArrayList();
for(ArrayList集合:集合){
用于(对象对象对象:集合){
列表。添加(obj);
}
}
系统输出打印项次(列表);
它将输出打印为:
[data1,data2,data3,data1,data2,data3]
请解释您试图实现的目标。并且不要使用原始类型。您在之后忘记了.stream()
。values()
ArrayList::stream
可以替换为List::stream
或Collection::stream