Wie finden Sie die maximale LawInfo nach Datum für alle Spiele in der Gruppierung von LawInfoType?java 8 stream wie zu groupingBy im Ergebnis groupyBy?
Ich habe einfaches Modell:
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;
}
Hauptprüfung
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)); //!!!????
aber ich brauche durch Spiele in jeder Gruppe max nach Datum Gruppe erhalten
like this : Map<LawInfoType, List<LawInfo>>
klein -> [ LawInfo (Fußball, max Datum), LawInfo (hockey, max Datum), LawInfo (Golf, max Datum), LawInfo (Basketball, max Datum)]
Mitte -> [LawInfo (Fußball, max Datum), LawInfo (hokey, max Datum), LawInfo (Golf, max Datum), LawInfo (Basketball, max Datum)]
groß -> [LawInfo (Fußball, maximales Datum), LawInfo (Golf, maximales Datum), LawInfo (Basketball, maximales Datum)]
Danke! aber Karte >>! = Karte > –
Atum