所以我有以下类和对象的ArrayList:
class Ticket{
String destination;
}
ArrayList<Ticket> tickets;
我想要的是从我的列表中获取一个字符串和整数的映射,其中包含票证中的目的地以及每个目的地列表中出现的次数。我想它会像这样开始,但我不知道如何继续:
Map<String,Integer> map=tickets.stream().filter(a->a.getDestination()).
答案 0 :(得分:2)
您可以像这样使用groupingBy收藏家和summingInt收藏家的组合:
Map<String,Integer> map =
tickets.stream()
.collect(Collectors.groupingBy(Ticket::getDestination,
Collectors.summingInt(e -> 1)));
在这种情况下,我特意使用了summingInt收集器,因为counting()收集器返回Long
类型,因为您希望地图值为{ {1}}然后summingInt收藏家是最合适的。
答案 1 :(得分:2)
使用COPY ./node_new_modules/* node_modules/
collector。
groupingBy
这会给你一个tickets.stream().collect(Collectors.groupingBy(Ticket::getDestination,
Collectors.counting()));
。
如果您想要一张包含Map<String, Long>
值的地图,您可以将Integer
替换为只返回counting
的{{1}}(这是this answer所做的)