groupingBy LawInfoType의 모든 게임에 대해 날짜별로 최대 LawInfo를 찾는 방법은 무엇입니까?자바 8 스트림 그룹화 방법 결과 그룹화로?
내가 간단한 모델이 있습니다
public enum Game {
football,
hokey,
golf,
basketball
}
public class LawInfo {
private Date minDate;
private State state;
private LawInfoType textType;
private String lawInfoText;
private Game game;
}
public enum LawInfoType {
big, middle , small;
}
public enum State {
draft, ready, cancel;
}
주요 테스트
List<LawInfo> list = new ArrayList<>();
LawInfo info = null;
Random random = new Random(123);
for (int i = 0; i < 3; i++) {
for (State state : State.values()) {
for (LawInfoType lawInfoType : LawInfoType.values()) {
for (Game game : Game.values()) {
info = new LawInfo(new Date(random.nextLong()), state, lawInfoType, "TEXT", game);
list.add(info);
}
}
}
}
Predicate<LawInfo> isReady = l->l.getState().equals(State.ready);
Map<LawInfoType, List<LawInfo>> map0 = list.stream()
.filter(isReady)
.collect(groupingBy(LawInfo::getTextType)); //!!!????
을하지만
like this : Map<LawInfoType, List<LawInfo>>
작은 게임 날짜 그룹이 각 그룹에 최대로 얻을 필요 -> [ LawInfo (축구, 최대 날짜), LawInfo (호키, 최대 날짜), LawInfo (골프, 최대 날짜), LawInfo (농구, 최대 날짜)]
중간 -> [LawInfo (축구, 최대 날짜), LawInfo (날조, 최대 날짜), LawInfo (골프, 최대 날짜), LawInfo (농구, 최대 날짜)]
큰 -> [LawInfo (축구, 최대 날짜), LawInfo (골프, 최대 날짜), LawInfo (농구, 최대 날짜)]
고마워요! 하지만지도 >>! > –
Atum