Java 8 Stream API toMap Umstellung auf TreeMap

public class Message {
    private int id;
    private User sender;
    private User receiver;
    private String text;   
    private Date senddate;
..
}

Habe ich

List<Message> list= new ArrayList<>();

Ich brauche umzuwandeln

TreeMap<User,List<Message>> map

Ich weiß, wie zu tun, zu transformieren, um HashMap mit

list.stream().collect(Collectors.groupingBy(Message::getSender));

Aber ich brauche TreeMap mit:
Key - User mit den neuesten Nachrichten senddate ersten
Wert - Liste sortiert nach senddate neueste zuerst

Teil der User Klasse

    public class User{
    ...
    private List<Message> sendMessages;
    ...

   public List<Message> getSendMessages() {
        return sendMessages;
    }

}

Benutzer Komparator:

     public class Usercomparator implements Comparator<User> {
        @Override
        public int compare(User o1, User o2) {
            return o2.getSendMessages().stream()
.map(message -> message.getSenddate())
.max(Date::compareTo).get()
           .compareTo(o1.getSendMessages().stream()
.map(message1 -> message1.getSenddate())
.max(Date::compareTo).get());
        }
    }
  • Sie planen Schlüssel User. Funktioniert dieser Klasse implementieren Comparable<User>? Wenn nicht, wie willst du Sie vergleichen?
  • Könntest du deinen post User Klasse? Auch, ein Beispiel für die Eingabe / Ausgabe?
  • Ich fügte hinzu, ein Teil der User-Klasse und compatator
  • Auch, ein Beispiel für die Eingabe / Ausgabe-denn es ist nicht klar, was Sie wollen, hier zu tun. Bitte erweitern.
  • Als Anmerkung: Comparator<Message> byDate=Comparator.comparing(Message::getSenddate); Comparator<User> userComparator=Comparator.comparing(user -> Collections.max(user.getSendMessages(), byDate), byDate);...
InformationsquelleAutor VoldemarP | 2016-01-31
Schreibe einen Kommentar