如何根據日期查找最大LawInfo所有遊戲在groupingBy LawInfoType?java 8流如何在結果groupingBy中分組?
我有簡單的模型:
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(hokey,最大日期),LawInfo(高爾夫,最大日期),LawInfo(籃球,最大日期)]
中間 - > [LawInfo(足球,最大日),LawInfo(虛情假意,最大日),LawInfo(高爾夫,最大日),LawInfo(籃球,最大日)
大 - > [LawInfo(足球,最大日期),LawInfo(hokey,最大日期),LawInfo(高爾夫,最大日期),LawInfo(籃球,最大日期)]
謝謝!但是Map >>!= Map > –
Atum