mans.stream() .collect((Collectors.groupingBy(Man::getAmountOfChild, Collectors.groupingBy(Man::getOld)))) //как подсчитать .entrySet() .forEach(map-> System.out.println(map.getKey() + " " + map.getValue())); 1 answer
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
|