mans.stream() .collect((Collectors.groupingBy(Man::getAmountOfChild, Collectors.groupingBy(Man::getOld)))) //как подсчитать .entrySet() .forEach(map-> System.out.println(map.getKey() + " " + map.getValue())); 
  • Imitation request based on the collection - Sasha Bushansky

1 answer 1

 List<Man> mans = asList( new Man(1, 25), new Man(1, 32), new Man(2, 40), new Man(2, 42), new Man(2, 40), new Man(4, 40)); Map<Integer, Map<Integer, Long>> collect = mans.stream() .collect(Collectors.groupingBy(Man::getAmountOfChild, Collectors.groupingBy(Man::getOld, Collectors.counting()))); collect.forEach((amountOfChild,v) -> v.forEach((old, count) -> System.out.println(String.format("amountOfChild = %s old = %s count = %s", amountOfChild, old, count)))); 

Result:

amountOfChild = 1 old = 32 count = 1
amountOfChild = 1 old = 25 count = 1
amountOfChild = 2 old = 40 count = 2
amountOfChild = 2 old = 42 count = 1
amountOfChild = 4 old = 40 count = 1

  • Thank you, I have already decided, but thanks anyway - Sasha Bushansky