Dieser Artikel richtet sich an Personen, die die Java Stream-API nicht lesen können.
Empfohlen für folgende Personen
Die Java Stream-API hat nichts mit E / A-Klassen wie InputStream und OutputStream zu tun. Es ist ein Mechanismus, um ein Auflistungsobjekt wie List, Set oder ein schleifenfähiges Element wie ein Array nur einmal in der Schleife zu verarbeiten.
--Eine Entität konvertieren (Kartenmethode) --Filtersammlung (Filtermethode)
Hier ist der Java-Code.
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("Ono Schwester,UNKNOWN");
// 1.Konvertieren Sie eine Entität.(map)
List<Person> persons = csvList.stream().map(Person::convertPersonFromCSV).collect(Collectors.toList());
// 2.Entitäten filtern.(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]));
}
}
}
Schauen wir uns das oben in der Reihenfolge an
Verwenden Sie die Kartenmethode, wenn Sie eine Entität konvertieren. Verwenden Sie die Map-Methode zum Konvertieren und die Collect-Methode, um Stream erneut in den Collection-Typ zu konvertieren. </ b>
Es gibt drei Hauptschreibweisen:
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());
Alles ist gleich, holen Sie sich den String, der ein Element von csvList ist. Ich führe eine Methode aus, die es in ein Personenobjekt konvertiert und zurückgibt.
--Das erste ist das Schreiben, indem das CSV-Argument weggelassen wird --Die zweite ist das Schreiben in einer Zeile, wobei die Rückgabemethode weggelassen wird ――Das dritte ist, wie man schreibt, ohne etwas auszulassen
Durch die Verwendung von Stream konnte ich List
Sie können ein neues Sammlungsobjekt erstellen, indem Sie bestimmte Elemente aus der Sammlung ausschließen. </ b> Verwenden Sie die Filtermethode, um das Zielobjekt zu beschreiben, das Sie behalten möchten.
persons.stream().filter(p -> p.getGender() == Gender.MAN).collect(Collectors.toList());
Mit Stream konnte ich eine neue Sammlung erstellen, in der nur Männer in einem Liner aus List
Recommended Posts