Dans le post précédent, j'ai écrit les bases de Stream, le flux d'opération intermédiaire → opération de terminaison. Cela ressemble à un mémorandum, mais j'écrirai ceux que j'ai utilisés jusqu'à présent et les opérations intermédiaires et de terminaison qui semblent être utilisées fréquemment.
Tout d'abord, de map () et Collectors.toList (), que je pense personnellement être les plus fréquemment utilisés. Par exemple, supposons que vous ayez une liste de classes Staff avec nom, id, etc.
public class Staff {
private String name;
private Long id;
private int age;
・
・
・
//getter/setter etc.
・
・
Si vous voulez une liste qui extrait uniquement les ID pour des raisons de traitement, en supposant que les ID sont des numéros de série à partir de 1 (pas de duplication) Il peut être extrait en utilisant map () et Collectors.toList () comme suit.
//staffList contient 6 éléments
List<Long> idList = staffList.stream().map(staff -> staff.getId()).collect(Collectors.toList());
idList.stream().forEach((id) -> {
System.out.println(id.toString());
});
Résultat de sortie
1
2
3
4
5
6
7
8
9
10
11
12
Le traitement effectué ci-dessus est map(staff -> staff.getId()) Dans la partie de, staff, qui est un élément extrait de staffList, est converti en staff.getId (). ensuite, collect(Collectors.toList()) Liste le groupe staff.getId () extrait de la portée de tous les éléments dans. En conséquence, une liste avec uniquement les ID extraits a été obtenue. (Nous avons 12 membres du personnel utilisant IntStream, mais j'expliquerai IntStream un jour ... Je posterai seulement le code cette fois)
//12 membres du personnel préparés par IntStream, si même 1 mil est utile quelque part
List<Staff> staffList = IntStream.rangeClosed(1, 12).boxed()
.map(i -> new Staff(String.valueOf(i) + "Tu", Long.valueOf(i), i)).collect(Collectors.toList());
La carte (conversion) utilisée ici peut être utilisée à divers endroits, alors ne l'oubliez pas.
La deuxième chose qui semble sortir le plus souvent est le filtre. map était une conversion, mais le filtre est une recherche. Ici, l'ID est spécifié et le nom du personnel est demandé. Pour le nom de chaque membre du personnel, j'ai entré le numéro d'identification avec vous ajouté.
//Argument searchID= 1L
Staff target = staffList.stream().filter(staff -> staff.getId() == searchID).findFirst().orElse(null);
System.out.println(target.getName());
Résultat de sortie
1 vous
filter(staff -> staff.getId() == searchID) Spécifiez les conditions à éliminer avec la méthode de filtrage ci-dessus.
findFirst().orElse(null) Tout d'abord, la portée qui correspond au filtre est acquise, et si elle n'est pas trouvée, null est renvoyée.
Il y a beaucoup d'autres choses que j'utilise souvent, donc je trouverai le temps de les ajouter.
Recommended Posts