Je vous suggère d'essayer d'abord de comprendre Java 8 dans son ensemble, le plus important dans votre cas, ce sera les flux, les lambdas et les références de méthodes.
Vous ne devez jamais convertir du code existant en code Java 8 ligne par ligne, vous devez extraire les fonctionnalités et les convertir.
Ce que j'ai identifié dans votre premier cas est le suivant:
- Vous souhaitez ajouter des éléments d'une structure d'entrée à une liste de sortie s'ils correspondent à un prédicat.
Voyons comment nous faisons cela, nous pouvons le faire avec ce qui suit:
List<Player> playersOfTeam = players.stream()
.filter(player -> player.getTeam().equals(teamName))
.collect(Collectors.toList());
Ce que vous faites ici est:
- Transformez votre structure d'entrée en flux (je suppose ici qu'elle est de type
Collection<Player>
, maintenant vous avez un fichier Stream<Player>
.
- Filtrez tous les éléments indésirables avec un
Predicate<Player>
, mappant chaque joueur sur le booléen true s'il est souhaité qu'il soit conservé.
- Collectez les éléments résultants dans une liste, via un
Collector
, ici, nous pouvons utiliser l'un des collecteurs de bibliothèque standard, qui est Collectors.toList()
.
Cela intègre également deux autres points:
- Code contre interfaces, donc code contre
List<E>
over ArrayList<E>
.
- Utiliser l'inférence de diamant pour le paramètre de type dans
new ArrayList<>()
, vous utilisez Java 8 après tout.
Passons maintenant à votre deuxième point:
Vous voulez à nouveau convertir quelque chose de Java hérité en Java 8 sans regarder la situation dans son ensemble. @IanRoberts a déjà répondu à cette partie , même si je pense que vous devez faire players.stream().filter(...)...
ce qu'il a suggéré.