Cet article est destiné aux personnes qui ne peuvent pas lire l'API Java Stream.
Recommandé pour les personnes suivantes
L'API Java Stream n'a rien à voir avec les classes d'E / S telles que InputStream et OutputStream. C'est un mécanisme permettant de traiter un objet de collection tel que List, Set ou un élément bouclable tel qu'un tableau une seule fois dans la boucle.
--Convertir une entité (méthode de la carte)
Voici le code Java.
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class StreamTest {
public static void main(String[] args) {
List<String> csvList = new ArrayList<>();
csvList.add("Naoki Tanaka,MAN");
csvList.add("Kazuki Kitamura,MAN");
csvList.add("Shizuka Kato,WOMAN");
csvList.add("Sœur Ono,UNKNOWN");
// 1.Convertissez une entité.(map)
List<Person> persons = csvList.stream().map(Person::convertPersonFromCSV).collect(Collectors.toList());
// 2.Filtrer les entités.(filter)
List<Person> mens = persons.stream().filter(p -> p.getGender() == Gender.MAN).collect(Collectors.toList());
System.out.println("Print all persons");
persons.forEach(System.out::println);
System.out.println("Print mens only");
mens.forEach(p -> System.out.println(p.getName()));
}
enum Gender {
MAN,
WOMAN,
UNKNOWN;
}
static class Person {
private String name;
private Gender gender;
public Person(String name, Gender gender) {
this.name = name;
this.gender = gender;
}
@Override
public String toString() {
return String.format("My name is %s . \r\nMy gender is %s.", name, gender);
}
public String getName() {
return this.name;
}
public Gender getGender() {
return this.gender;
}
public static Person convertPersonFromCSV(String csv) {
String[] csvStrings = csv.split(",");
if (csvStrings.length != 2) throw new IllegalArgumentException("csv is illegal format.");
return new Person(csvStrings[0], Gender.valueOf(csvStrings[1]));
}
}
}
Regardons ce qui précède dans l'ordre
Utilisez la méthode map lors de la conversion d'une entité. Utilisez la méthode de carte pour convertir et la méthode de collecte pour convertir à nouveau Stream en type Collection. </ b>
Il existe trois manières principales d'écrire:
csvList.stream().map(Person::convertPersonFromCSV).collect(Collectors.toList());
csvList.stream().map(csv -> Person.convertPersonFromCSV(csv)).collect(Collectors.toList());
csvList.stream().map(csv -> {
Person person = Person.convertPersonFromCSV(csv);
return person;
}).collect(Collectors.toList());
Tout est pareil, récupérez la String qui est un élément de csvList, J'exécute une méthode qui le convertit en objet Person et le renvoie.
En utilisant Stream, j'ai pu convertir List
Vous pouvez créer un nouvel objet de collection en excluant certains éléments de la collection. </ b> Utilisez la méthode de filtrage pour décrire l'objet cible que vous souhaitez conserver.
persons.stream().filter(p -> p.getGender() == Gender.MAN).collect(Collectors.toList());
En utilisant Stream, j'ai pu créer une nouvelle collection avec uniquement des hommes extraits de List
Recommended Posts