Bonne façon à la liste des filtres distincted par la propriété et triés par date

Sahbaz:

J'ai chose très simple à faire, j'ai liste des personnes comme ceci:

[{
    name: John,
    date: 01-01-2018,
    attend: true
},
{
    name: Adam,
    date: 01-01-2018,
    attend: false
},
{
    name: Adam,
    date: 01-02-2018,
    attend: true
},
{
    name: JOHN,
    date: 01-02-2018,
    attend: false
}]

Résultat de ce tableau doit être: Adam (vrai), John (false)

Donc, je dois retourner liste des dernières entrées des utilisateurs, dans ce cas, John a d'abord confirmé qu'il assiste, puis il a changé d'avis et a dit qu'il ne fréquente pas si je retourne sa dernière entrée (note que, parfois, il est écrit JOHN et parfois John, mais il est la même personne, qui est une sorte de partie délicate)

Ma question quelle est la meilleure approche pour filtrer ce genre de liste, je pensais l'application « unique par flux java propriété » mais d'abord devra personnes par ordre chronologique décroissant et les (majuscules / minuscules), puis il me faudrait en quelque sorte prendre dernière entrée.

Quelqu'un at-il une bonne idée de ce qui est le mieux à cette approche?

aussi:

Vous pouvez utiliser Collectors.toMappour faire la même chose que:

List<Person> finalList = new ArrayList<>(people.stream()
        .collect(Collectors.toMap(a -> a.getName().toLowerCase(),  // name in lowercase as the key of the map (uniqueness)
                Function.identity(), // corresponding Person as value
                (person, person2) -> person.getDate().isAfter(person2.getDate()) ? person : person2)) // merge in case of same name based on which date is after the other
        .values()); // fetch the values

Note : Ceprécède suppose la minimalePersonclasse pour être

class Person {
    String name;
    java.time.LocalDate date;
    boolean attend;
    // getters and setters
}

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=167875&siteId=1
conseillé
Classement