Es gibt übrigens keine Basisausgabe
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
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.
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
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ß
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