У меня вопрос о запуске этого кода.
private void groupingByMethod(final List<Integer>values){
//I THOUGHT THAT e was a List but is a int already
final ToIntFunction<Integer>summingFunction = e->{
return e;
};
values.stream()
.collect(Collectors.groupingBy(Function.identity(),Collectors.mapping(Function.identity(),Collectors.summarizingInt(summingFunction))))
.forEach((a,b)->System.out.println(a+" "+b));
}
Если я запускаю тестирование этого кода с данными.
private final List<Integer>data = Arrays.asList(3,3,1,2,4);
Я получаю ожидаемые данные.
1 IntSummaryStatistics{count=1, sum=1, min=1, average=1,000000, max=1}
2 IntSummaryStatistics{count=1, sum=2, min=2, average=2,000000, max=2}
3 IntSummaryStatistics{count=2, sum=6, min=3, average=3,000000, max=3}
4 IntSummaryStatistics{count=1, sum=4, min=4, average=4,000000, max=4}
Конечно, в моем коде я использую вложенный Collectors.collectingAndThen, но это то же самое.это для того, чтобы сделать код проще.
Так что все работает как шарм, так в чем же проблема, верно?
У меня вопрос к параметру
Collectors.summarizingInt(summingFunction)
Я знаю, чтоCollectors.summarizingInt ожидает toIntFunction , поэтому откуда берется это значение, я также знаю, что это размер массива, так как java может знать, что я ожидаю это значение?Я ожидал значение List в качестве параметра, чтобы я мог просто сделать List :: size , так что это более понятно для моей группы, генерирующей список, так что сам список передается в качестве параметра, и вы хотитеВы хотите этого, но .size () уже
Может кто-нибудь помочь мне с этим?Возможно, это не list.size ()?если да, то как рассчитывается значение счетчика?