java8 stream은list에 여러 필드를 동시에 그룹화하고 대상에 값을 부여합니다

4744 단어 Java8lamda
실체 클래스를 다시 쓰는 hashcode 방법과 equals 방법은 ABC에 따라 그룹을 나누어 시작 시간이 현재 시간보다 적은 최대 대상을 가져오고 대상의 D 속성에 값을 부여해야 한다
Map<String, List<Charging>> collect = chargings.stream()
                .filter(charging -> System.currentTimeMillis() > charging.getStartTime().getTime())
                .collect(
                        Collectors.groupingBy(charging -> charging.getA() + charging.getB() + charging.getC(),
                                Collectors.collectingAndThen(Collectors.toList(),
                                        x -> {
                                            x.stream().collect(Collectors.maxBy(Comparator.comparing(TCharging::getStartTime)))
                                                    .ifPresent(charging -> charging.setD("1"));
                                            return x;
                                        })));

좋은 웹페이지 즐겨찾기