Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从映射转换为arraylist_Java - Fatal编程技术网

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 8
Stream
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