Java 8 Java8流由两列组成
所以我有一门课:Java 8 Java8流由两列组成,java-8,java-stream,Java 8,Java Stream,所以我有一门课: class AA { private int number; private String name; private String other; public AA(int number, String name, String other) { this.number = number; this.name = name; this.other = other; } public int getNumber() { return nu
class AA {
private int number;
private String name;
private String other;
public AA(int number, String name, String other) {
this.number = number;
this.name = name;
this.other = other;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOther() {
return other;
}
public void setOther(String other) {
this.other = other;
}
@Override
public String toString() {
return "AA{" + "number=" + number + ", name=" + name + ", other=" +
other + '}';
}
}
我创建了一个列表:
List<AA> list = new ArrayList<>();
list.add(new AA(1, "1TEXT", "one"));
list.add(new AA(2, "1TEXT", "two"));
list.add(new AA(3, "2TEXT", "three"));
list.add(new AA(1, "2TEXT", "four"));
list.add(new AA(1, "2TEXT", "one"));
上述代码将通过编号…进行连接。。。。
Bu如何使用两列进行分组
编辑:
我想去
Map<Integer, List<String>>
在列表中我们还有其他字段吗
我不认为你在找第二组。您需要的只是映射按其他属性分组的AA实例。您可以使用下游收集器映射来实现这一点 查看所需的输出,似乎需要设置为值,而不是列表
我不认为你在找第二组。您需要的只是映射按其他属性分组的AA实例。您可以使用下游收集器映射来实现这一点 查看所需的输出,似乎需要设置为值,而不是列表
你想以什么结束?一张地图?谢谢我更新了我的帖子:我不明白-如果你拿出一张只折叠在一个维度上的地图,你怎么说是由两列组成的?一个维度是整数,第二个维度是列表。当我决定使用“两列分组”时,是否必须始终在地图中获取地图?您希望得到什么?一张地图?谢谢我更新了我的帖子:我不明白-如果你拿出一张只折叠在一个维度上的地图,你怎么说是由两列组成的?一个维度是整数,第二个维度是列表。当我决定使用“两列分组”时,是否必须始终在地图中获取地图?
Map<Integer,List<AA>> ss = list.stream().collect(Collectors.groupingBy(AA::getNumber));
Map<Integer, List<String>>
import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.mapping;
import static java.util.stream.Collectors.toSet;
...
Map<Integer, Set<String>> map =
list.stream()
.collect(groupingBy(AA::getNumber, mapping(AA::getOther, toSet())));