所以我有一个班级:
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"));
我创建了一个列表:
* number 1 : - one
- four
* number 2 : - two
* number 3 : - three
我想通过列分组:数字和其他来获取如下信息:
Map<Integer,List<AA>> ss = list.stream().collect(Collectors.groupingBy(AA::getNumber));
Map<Integer, List<String>>
上面的代码将通过数字来实现.... 如何使用两列进行分组?
编辑: 我想得到
webkit
答案 0 :(得分:4)
我不认为你正在寻找第二个&#34;&#34;通过...分组。您需要的只是映射按AA
属性分组的other
个实例。您可以使用下游收集器mapping
来实现此目的。
查看所需的输出,您似乎需要Set<String>
作为值,而不是List
s。
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())));