Comment je peux créer comparateur chaîne par lambda?

Nicky:

Je suis en train de trier la liste des chaînes à travers mon propre comparateur. J'ai vu le modèle ci-dessous pour la liste des développeurs.

//lambda
listDevs.sort((Developer o1, Developer o2)->o1.getAge()-o2.getAge());

Mon code: (cela donne-moi Erreur de compilation)

List<String> s = new ArrayList<>();  
Collections.sort(s, (String a, String b)-> {
    return a.length() > b.length()
});

Ce code ne compile. aider quelqu'un peut me ce qui ne va pas avec ce que je fais?

Dead Pool :

Arrays.sortest utilisé pour le tri Arraysnon pour les Collectionobjets, utilisez Collections.sort de triArrayList

Collections.sort(s,(a,b)->a.length()-b.length());

Et l' expression lambda correspondant est erroné (String a,String b)-> a.length() > b.length()qui renvoie la valeur booléenne. Comparator.compare doit retourner la intvaleur. Et aussi le type des paramètres peut être explicitement déclarée ou il peut être déduit du contexte.

int compare(T o1, T o2)

Vous pouvez également utiliser list.sort

s.sort((a,b)->a.length()-b.length());

Je suppose que tu aimes

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