Java-Anwendung für Anfänger: Stream

Es gibt übrigens keine Basisausgabe

Annahme

Java ist das Verwenden Sie Klassen und Methoden Wenn Sie if-Anweisung und for-Anweisung verwenden können, wird es irgendwie sein.

Für Menschen

damit?

Ich habe den Schreibstil nicht so sehr geändert, dass sich die Leistung verbessern wird (obwohl dies der Fall ist). Wenn Sie {} wie ein Fuchs aufblasen, sehen Sie. Es ist schwer zu sehen

Schwer zu sehen.java


package dummy;

import java.util.ArrayList;
import java.util.List;

/**
 *Schwer zu erkennendes Beispiel
 * 
 * @Autor mich
 *
 */
public class Dummy {

	/**
	 *Hauptfunktion
	 * 
	 * @param args Argument
	 */
	public static void main(String[] args) {
		run();
	}

	/**
	 *Schwer zu erkennende Verarbeitung
	 */
	public static void run() {
		//Deklarieren Sie eine Liste von Zeichenfolgen
		List<String> strList = new ArrayList<String>();
		//Setzen Sie ein in
		for (int i = 0; i < 100; i++) {
			strList.add("a");
		}
		//Über Zeichenketten
		for (String str : strList) {
			if (str.isEmpty()) {
				//Leere Zeichen
				System.out.println("Ich sage nicht ja");
			} else if (str.equals("a")) {
				// a
				System.out.println("Es ist ein");
			} else {
				//Andere
				for (int l = 0; l < 100; l++) {
					System.out.println(str);
				}
			}
		}
	}
}

Hmm, es ist schwer zu sehen Lassen Sie uns das aufräumen

Clever.java


package dummy;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;

/**
 *Schwer zu erkennendes Beispiel<br>
 * ->Geändert
 * <p>
 * 
 * @Autor mich
 * @Autor
 *
 */
public class Dummy {

	/**
	 *Hauptfunktion
	 * 
	 * @param args Argument
	 */
	public static void main(String[] args) {
		run();
	}

	/**
	 *Schwer zu erkennende Verarbeitung
	 * ->Änderung
	 */
	public static void run() {
		//Deklarieren Sie eine Liste von Zeichenfolgen
		List<String> strList = new ArrayList<String>();
		//Setzen Sie ein in
		IntStream.range(0, 100).forEach(i -> strList.add("a"));
		//Über Zeichenketten
		strList.forEach(Dummy::conditions);
	}

	/**
	 *Die Ausgabe ändert sich abhängig vom Eingabewert<br>
	 *Verzweigungszustand
	 * <p>
	 * <ul>
	 * <li>Leere Zeichen-> "Ich sage nicht ja"
	 * <li>"a" -> "Es ist ein"
	 * <li>Andere->Geben Sie den Eingabewert so aus, wie er ist
	 * </ul>
	 * @param str Zeichenkette eingeben
	 */
	public static void conditions(String str) {
		if (str.isEmpty())
			System.out.println("Ich sage nicht ja");
		else if (str.equals("a"))
			System.out.println("Es ist ein");
		else
			IntStream.range(0, 100).forEach(i -> {System.out.println(str);});
	}
}

Was hat sich geändert ・ Für eine Anweisung, die angibt, wie oft in eine Zeile gesetzt wird ・ Da es schwierig ist zu erkennen, ob es in eine große for-Anweisung eingeschlossen ist, steht es in einer Zeile ・ Der bedingte Zweig im Inneren wird in eine andere Methode geändert

Nun, es macht keinen Sinn, weil es ein Zweig mit totem Code ist. Wenn Sie keine Verbindung herstellen müssen, wenn Anweisungen wie diese vorliegen, benötigen Sie nur eine Bedingung Ist es so

Beeindruckend.java


package dummy;

import java.util.Arrays;
import java.util.List;

public class Dummy {

	public static void main(String[] args) {
		run("a");
	}

	/**
	 *Für die eingegebene Zeichenfolge<br>
	 * <p>
	 * a,b,c,d,e,f,Wenn es mit dem Buchstaben g übereinstimmt<br>
	 *Ausgabe mit einem Wahoi auf der Rückseite hinzugefügt
	 * 
	 * @param str Suchbedingung
	 */
	public static void run(String str) {
		List<String> list = Arrays.asList("a", "b", "c", "d", "e", "f", "g");
		list.stream().filter(v -> v.equals(str)).map(v -> v + "Beeindruckend").forEach(Dummy::echo);
	}

	/**
	 *Verarbeitung zur Ausgabe des Eingabewerts an die Konsole
	 * 
	 * @param obj Eingabewert
	 */
	public static void echo(Object obj) {
		System.out.println(obj);
	}
}

Das obere wird weggelassen, weil es ein Hindernis ist. Es ist nicht erforderlich, die Echofunktion zu trennen.

Was willst du sagen

Es ist ein tödlicher Strom.

Stream für die Zielquelle 0 oder mehr Zwischenoperationen + 1 Beendigungsoperation

Es ist ein großartiger Kerl

kwsk

Das ist es.java


package mk42;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;

public class Stream {

	public static void main(String[] args) {
		run();
	}

	public static void run() {
		// instance Initializer
		List<String> list = new ArrayList<String>() {
			{
				//Es ist leicht zu sehen, ob Sie es nicht wagen, zu brechen
				IntStream.range(0, 100).forEach(i -> {add("a");});
			}
		};

		/**Deklarieren Sie die Verwendung von Stream für eine Quelle namens list*/
		list.stream();

		/**Zwischenbetrieb(Du kannst es schaffen) */
		//Für das Element"a"Hinzufügen(Abkürzung für Wert, v oder Variable ist beigefügt, alles k)
		list.stream().map(v -> v + "a");
		//Filtern Sie die Elemente und sammeln Sie nur diejenigen, die die Bedingungen erfüllen
		list.stream().filter(v -> v.equals("a"));
		//Ein doppelter Zwischenbetrieb ist ebenfalls möglich
		list.stream().filter(v -> v.equals("a")).map(v -> v + "a");

		/**Kündigungsoperation*/
		list.stream().forEach(v -> {
			//Verarbeitung in der for-Anweisung
		});

		/**Finale Form*/
		list.stream().filter(v -> v.equals("a")).map(v -> v + "a").forEach(v -> {
			System.out.println(v);
		});
	}
}

Hoisa

Mit anderen Worten.java


list.stream().filter(v -> v.equals("a")).map(v -> v + "a").forEach(v -> {
			System.out.println(v);
		});

`Stream in einem Array verwenden → Sammle diejenigen, deren Elemente gleich" a "sind → füge" a "zu den gesammelten Elementen hinzu → sysout sie" Das ist. Dies ist eine Zeile.

Bitte gehen Sie die Arten des Zwischen- und Beendigungsbetriebs durch Offizielle Referenz streamen

Die meisten Zwischenoperationen sind einfach und bequem ・ Wenn es nur eine Bedingung gibt, wird die if-Anweisung filter ersetzt ・ Karte der Manipulation von Elementen (Hinzufügen)

For Each ist praktisch für Terminierungsvorgänge.

Der Instanzinitialisierer ist völlig cool. Bitte schauen Sie genau hin.

Übrigens, wenn Sie nur für Jeder ohne Zwischenoperation verwenden, können Sie ohne Stream gehen

Passend ★.java


list.forEach( v -> {sysout(v);};

Mögen

Was ist v-> v + 1!

Es wurde ein Lambda-Typ genannt, ich mag es, weil es leicht zu verstehen ist Da v eine Variable ist, die entsprechend angehängt ist, kann es alles sein. Es ist eine Abkürzung für Wert, aber ich benutze v, weil es cool ist. Stream Spaß

Schließlich

Es macht nicht nur Spaß, es ist auch normalerweise besser lesbar Es sei denn, Sie denken, dass die for-Anweisung leichter zu lesen ist Lass uns Stream benutzen!

Wenn die bedingte Verzweigung kompliziert ist, ist es insgesamt schwierig, mit einer Zeile im Stream umzugehen, oder es ist schwer zu erkennen. Ist es besser, die Verzweigungsbedingung als separate Methode zu verwenden oder die for-Anweisung gehorsam zu verwenden?

Ich mag den Namensstrom Wunderschönen

das ist alles

Recommended Posts

Java-Anwendung für Anfänger: Stream
Java-Debug-Ausführung [für Java-Anfänger]
[Java] Grundlegende Aussage für Anfänger
Java für Anfänger, Daten verstecken
[Für Anfänger] So bedienen Sie die Stream-API nach Java 8
[Für Anfänger] Zusammenfassung des Java-Konstruktors
Anfänger spielen Janken-Spiele in Java
Java für Anfänger, Ausdrücke und Operatoren 1
[Für Anfänger] Führen Sie Selenium auf Java aus
Java für Anfänger, Ausdrücke und Operatoren 2
Hinweise für Anfänger in der Android-Anwendungsentwicklung
[Für Java-Anfänger] Informationen zur Ausnahmebehandlung
Klassen und Instanzen Java für Anfänger
Ein Memorandum für Anfänger der Android-Anwendungsentwicklung
Für JAVA-Lernen (2018-03-16-01)
Probieren Sie Java 8 Stream aus
Lernen Sie aus "Na und", den Grundlagen von Java [für Anfänger]
Java 9+ Anwendungsstatus
[Für Anfänger] Unterschied zwischen Java und Kotlin
Java Stream API
2017 IDE für Java
Java 8 studieren (Stream)
Java Stream-Beendigung
[Java] Stream-Verarbeitung
Java 9 Optional :: stream
Java Nr. 3 für die Stream-Speichernutzung, die für Unternehmen nützlich ist
Eine Sammlung einfacher Fragen für Java-Anfänger
[Für Anfänger] Über Lambda-Ausdrücke und Stream-API
[Einführung in Java] Grundlagen der Java-Arithmetik (für Anfänger)
Verwenden wir Java New FileIO! (Einführung für Anfänger)
[Java] für Anweisung, während Anweisung
[Java] Stream Collectors Hinweis
[Java] Paket für die Verwaltung
[Java] für Anweisung / erweitert für Anweisung
[Java] Stream API-Stream-Generierung
NLP für Java (NLP4J) (2)
(Memo) Java für Anweisung
NLP für Java (NLP4J) (1)
Informationen zur Java8-Stream-Reduzierung
Grobe Zusammenfassung des Java8-Streams
[Für Anfänger] Verstehen Sie schnell die Grundlagen von Java 8 Lambda
[Für Anfänger] Mindestbeispiel für die Anzeige von RecyclerView in Java
Einführung in Java für Anfänger Grundkenntnisse der Java-Sprache ①
Java Häufig verwendete Anweisungsliste (für Anfänger und Anfänger)
[Für Anfänger] Bis zum Erstellen einer Webanwendungsentwicklungsumgebung mit Java unter Mac OS
Java (WebSphere Application Server) Hinweis [1]
[Für Anfänger] Erläuterung von Klassen, Instanzen und Statik in Java
[Java] Anfängerverständnis von Servlet-②
Erstellung einer Webanwendungsentwicklungsumgebung in Java (für unerfahrene Personen)
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Java Stream API Spickzettel
Bücher zum Erlernen von Java
[Java] Anfängerverständnis von Servlet-①
[Für Super-Anfänger] DBUnit Super-Einführung