Java 8 Flux API toMap la conversion de TreeMap

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

J'ai

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

J'ai besoin de les transformer à

TreeMap<User,List<Message>> map

Je sais comment le faire, de se transformer en table de hachage à l'aide de

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

Mais j'ai besoin de TreeMap avec:
La clé de l'Utilisateur avec le plus récent message senddate première
La valeur de la Liste triée par senddate nouveau premier

Part de l'Utilisateur de la classe

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

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

}

Utilisateur comparateur:

     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());
        }
    }
Vous êtes planification pour avoir la clé de type User. Cette classe ne mettre en œuvre Comparable<User>? Si non, comment voulez-vous comparer?
Pourriez-vous poster votre User classe? Aussi, un échantillon d'entrée / sortie?
J'ai ajouté de la part de l'Utilisateur de la classe et compatator
Aussi, un échantillon d'entrée / de sortie, car il n'est pas clair ce que vous voulez faire ici. Merci de développer.
Comme une note de côté: Comparator<Message> byDate=Comparator.comparing(Message::getSenddate); Comparator<User> userComparator=Comparator.comparing(user -> Collections.max(user.getSendMessages(), byDate), byDate);...

OriginalL'auteur VoldemarP | 2016-01-31