Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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 基于唯一值将列表拆分为子列表_Java_Arraylist_Java 8_Classification_Decision Tree - Fatal编程技术网

Java 基于唯一值将列表拆分为子列表

Java 基于唯一值将列表拆分为子列表,java,arraylist,java-8,classification,decision-tree,Java,Arraylist,Java 8,Classification,Decision Tree,我有一份清单: List,如果有人有这方面的经验,如果您能告诉我这是否是生成子列表的正确方法,我将不胜感激 谢谢。我建议创建一个HashMap,并将这些列表分组。然后只需调用map.values()即可获得集合 List List=new ArrayList(); 添加(Lists.newArrayList(“A”、“B”、“Y”)); 添加(Lists.newArrayList(“C”、“D”、“Z”); 添加(Lists.newArrayList(“A”、“D”、“X”)); 添加(List

我有一份清单:
List,如果有人有这方面的经验,如果您能告诉我这是否是生成子列表的正确方法,我将不胜感激


谢谢。

我建议创建一个
HashMap
,并将这些列表分组。然后只需调用
map.values()
即可获得
集合

List List=new ArrayList();
添加(Lists.newArrayList(“A”、“B”、“Y”));
添加(Lists.newArrayList(“C”、“D”、“Z”);
添加(Lists.newArrayList(“A”、“D”、“X”));
添加(Lists.newArrayList(“D”、“C”、“A”));
Map mapped=list.stream()
.collect(Collectors.groupingBy(li->li.get(1));
System.out.println(映射);
集合groupedList=mapped.values();

使用Java 8,您可以使用
groupingBy
收集器:

Map<String, List<List<String>>> grouped = D.stream()
                .collect(Collectors.groupingBy(list -> list.get(1)));
Collection<List<List<String>>> sublists = grouped.values();
Map group=D.stream()
.collect(Collectors.groupingBy(list->list.get(1));
集合子列表=分组的.values();
或者按照@AlexisC的建议:

import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.groupingBy;

Collection<List<List<String>>> sublists = D.stream()
             .collect(collectingAndThen(groupingBy(list -> list.get(1)), Map::values));
导入静态java.util.stream.Collectors.collectingAndThen;
导入静态java.util.stream.Collectors.groupingBy;
集合子列表=D.stream()
.collect(collectingAndThen(groupingBy(list->list.get(1)),Map::values));

。。或者
Collection sublist=D.stream().collect(collectingAndThen(groupingBy(x->x.get(1)),Map::values))虽然,在这种情况下,我怀疑与您所做的(如果您在
collect
之后直接调用值)有很大的不同,但我猜,
collecting然后
仅在生成的
收集器
被传递到另一个化合物
收集器
时才有用。否则,这只是对结果调用方法的一种更复杂的方式。
Map<String, List<List<String>>> grouped = D.stream()
                .collect(Collectors.groupingBy(list -> list.get(1)));
Collection<List<List<String>>> sublists = grouped.values();
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.groupingBy;

Collection<List<List<String>>> sublists = D.stream()
             .collect(collectingAndThen(groupingBy(list -> list.get(1)), Map::values));