On m'a dit «Ecrivez en flux!» Et je n'en ai pas compris le fond, alors je vais le résumer.
--stream Très pratique.
List<String> tanakaList =
list.stream
.filter(item -> item.getName.equals("Tanaka"))
.collect(Collectors.toList());
filter
pour affiner uniquement les objets dont le nom est" Tanaka ".--Il y a peu de nids.
(Depuis que j'ai pris le nombre de lignes avec list.add (), je suis vraiment content qu'il ait disparu ...)
Vous ne pouvez pas brancher comme if-else. Si vous souhaitez le faire, vous devez préparer deux flux et les écrire en tant que processus distincts.
Si vous utilisez stream lors du tri avec sql et de l'obtention de données, vous devez réécrire le processus de tri côté flux, donc j'ai pensé qu'il ne devrait pas être utilisé dans le processus qui se soucie de l'ordre de tri.
List<String> nameList = list.stream
.map(item -> item.getName)
.collect(Collectors.toList());
map
et traitez la valeur de" item ".--Il y a peu de nids.
list.stream
.filter(item -> !item.getName.equals("Tanaka"))
.forEach({
item -> throw new Exception(
"don't tanaka exception."
)
});
filter
.
--Tourner une boucle avec forEach
et lancer une exception" Not Tanaka "s'il y a un objet autre que Tanaka.--Il y a peu de nids. --for (String tanaka: list) Vous n'avez même pas besoin de l'écrire. ――Il est facile de voir ce qu'il faut faire dans ce cas.
int total = list.stream()
.reduce((base, value) -> {
return base + value;
});
Contenu de la liste
List<int> list = Lists.newArrayList();
list.add(1);
list.add(2);
list.add(3);
1: Pourquoi puis-je utiliser une méthode comme "item.getName"?
-> Il existe une classe modèle "Student" dont le nom est obtenu à partir de SQL.
Si la liste est définie par "List
Classe d'étudiants
@Data
@Builder
class Student {
private String name;
}
Stream.java
List<Student> list = Lists.newArrayList();
List<String> tanakaList = list.stream
.map(item -> item.getName.equals())
.collect(Collectors.toList())
Je n'étais pas habitué à lambda et stream était en mauvais état, mais c'était bien car la quantité de code était extrêmement réduite lorsque j'essayais de l'utiliser. Le plus grand mérite est que la profondeur de nidification a été éliminée à la fois. Une fois que j'ai su que c'était si pratique, j'ai pensé que je ne l'utiliserais pas comme si j'étais obsédé par cela à l'avenir. Alors j'ai pensé que j'aurais peur s'il y avait des inconvénients que je ne connaissais pas encore. (Mais je pense que je vais l'utiliser pendant un moment, merci de me le dire ...)
Recommended Posts