Comment modifier le paramètre de tri en fonction d'une vérification nulle dans le flux Java 8.
Exemple:
myList = myList .stream (). sorted (Comparator.comparing (Profile: : getFirstName)). collect (Collectors.toList ());
Ici, si getFirstName s'avère NULL, je veux utiliser une autre valeur getLastName.
Comme:
if(Profile.getFirstName()==null) Sort using Profile.getLastName() else Sort using Profile.getFirstName()
3 Réponses :
...sorted(Comparator.comparing(x -> x.getFirstName() == null ? x.getLastName() : x.getFirstName()))....
cela ne se compilera pas car l'interface fonctionnelle de Comparator prend deux arguments.
J'ai fait ceci:
myList = myList.stream().sorted(Comparator.comparing(profile->profile.getFirstName()==null? profile.getLastName():profile.getFirstName())).collect(Collectors.toList());
myList.stream().sorted((a, b) -> { if(a.getFirstName() != null && b.getFirstName() != null) { return a.getFirstName().compareTo(b.getFirstName()); } if (a.getLastName() != null && b.getLastName() != null) { return a.getLastName().compareTo(b.getLastName()); } return 0; });
Vous n'utilisez pas de référence de méthode, mais plutôt un lambda?
À moins qu'il ne soit nécessaire de remplacer la liste par une nouvelle liste, vous pouvez simplement appeler
sort (comparateur)
sur la liste, au fait.