J’ai un Set usernames
et une List players
Je voudrais filtrer les joueurs qui ne sont pas dans l’ensemble.
Je sais comment faire cela dans Vanilla pre Java 8
List distinctPlayers = new ArrayList(); for(Player p : players) { if(!usernames.contains(p.getUsername()) distinctPlayers.add(p); }
J’essaye d’écrire ce code simple avec une expression Lambda, mais j’ai du mal à obtenir usernames.contains()
pour travailler dans un filtre
players.stream().filter(!usernames.contains(p -> p.getUsername())) .collect(Collectors.toList());
Cela ne comstack pas. “Ne peut pas resove la méthode getUsername ()”
Vous avez l’expression lambda au mauvais endroit – l’ensemble de l’argument à filter
doit être l’expression lambda. En d’autres termes, “Étant donné un joueur p
, dois-je le filtrer ou pas?”
players.stream().filter(p -> !usernames.contains(p.getUsername()))