suchen
HeimJavajavaLernprogrammAnalysieren Sie Stream-Flow-Instanzen in Java

Analysieren Sie Stream-Flow-Instanzen in Java

May 09, 2023 pm 04:10 PM
javastream

    Streamflow

    Im vorherigen Artikel ging es um eine neue Funktion von Java 8: Lambda-Ausdruck, falls er verwendet wird Geschäft Wenn Sie es geschickt einsetzen, können Sie viel Code einsparen und sehen viel ordentlicher aus. Dann stellt dieser Artikel eine weitere neue Funktion vor: StreamStream, lesen Sie es nicht falsch! ! ! Nicht zum Spielen von Steam! !

    1. Was ist Stream:

    Stream ist ein neues Konzept, das von Java 8 vorgeschlagen wird, kein Eingabe- und Ausgabe-Stream #🎜🎜 # (Es hat eigentlich nichts mit dem E/A-Fluss zu tun) , sondern ein Tool, das funktionale Programmierung verwendet, um Sammlungsklassen zu bearbeiten. Kurz gesagt handelt es sich um einen Vorgang zur Verarbeitung von Sammlungsdaten in einer internen Iterationsmethode. Durch interne Iteration kann der Sammlungsklasse mehr Kontrolle verliehen werden. Die Funktionen von Stream und Iterator sind ähnlich, mit der Ausnahme, dass Iterator eine Operation ist, die Sammlungsdaten in Form einer externen Iteration verarbeitet.

    Natürlich hat Stream auch seine eigenen Eigenschaften:

    1 Es ist keine Datenstruktur und speichert keine Daten Definiert für den Originaldatensatz Eine Reihe von Operationen

    2 Diese Operationen sind verzögert, das heißt, wann immer auf ein Element im Stream zugegriffen wird, wird diese Reihe von Operationen für dieses Element #🎜🎜 ausgeführt #

    3 .Da die Daten nicht gespeichert werden, kann jeder Stream nur einmal verwendet werden.

    Stream-Implementierungsdiagramm:

    Analysieren Sie Stream-Flow-Instanzen in Java2. Stream erstellen: #🎜🎜 ## 🎜🎜# Wenn Sie einen Stream-Stream zum Betreiben einer Sammlung verwenden möchten, müssen Sie das Array oder die Sammlung in einen Stream-Stream konvertieren, bevor Sie ihn betreiben können

    Offizielle Dokumentation von Stream: # 🎜🎜#

    https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html

    Schauen wir uns zunächst vier Methoden an:

    1.Filter: Bedingte Filterung durch Lambda-Ausdrücke erreichen

    # 🎜 🎜#2.limit: Stream abfangen, einen Abschnitt des Streams abfangen3.skip: Stream überspringen

    4.distinct: Duplikate entfernen

    # 🎜🎜#Stream erstellen:

    public class Test {
        public static void main(String[] args) {
            String [] arr = {"东","南","西","北"};
            //将数组转换成Stream
            Stream<String> stream = Arrays.stream(arr);
            stream = Stream.of(arr);
            stream = Stream.of("东","南","西","北");
            //将list集合转换成stream
            List<String> list = Arrays.asList("aa","cc","bb","aa","dd");
            stream = list.stream();
            //排序、去重、遍历
            list.stream().sorted().distinct().forEach(System.out::println);
            //用过Stream流操作完集合后还可以再转换成一个新的集合
            List<String> newList = list.stream().sorted().distinct().collect(Collectors.toList());
            System.out.println(newList.toString());
        }
    }

    Ausgabe:

    //Das Ergebnis Nach dem Durchlaufen und Entfernen von Duplikaten:

    aa

    bbccdd

    // Nachdem Sie den Stream-Stream zum Betreiben der Sammlung verwendet haben, können Sie ihn auch in eine neue konvertieren Sammlung
    [aa , bb, cc, dd]




    Vier Methodenoperationen:
    Personenklasse:

    # 🎜🎜#Diese Klasse Es gibt viel Code, daher sind die Get/Set-Methoden nicht eingeschrieben. Vergessen Sie es nicht, wenn Sie es verwenden! !

    public class Person {
        private String  name;
        private Integer age;
        private  String country;
        private  char sex;
        @Override
        public String toString() {
            return "信息表:{" +
                    "name=&#39;" + name + &#39;\&#39;&#39; +
                    ", age=" + age +
                    ", country=&#39;" + country + &#39;\&#39;&#39; +
                    ", sex=" + sex +
                    &#39;}&#39;;
        }
    //这里节省的get/set代码
    //重写toString() 和 equals 和 hashcode 方法
        @Override
        public boolean equals(Object o){
            if(this == o)
                return true;
            if(o == null || getClass() != o.getClass())
                return false;
            Person person = (Person) o;
            if(country != null){
                if(this.country.equals(person.country)){
                    return  true;
                }else{
                    return false;
                }
            }
            return false;
        }
        @Override
        public int hashCode(){
            return Objects.hash(country);
        }
    }

    Testklasse:

    kombiniert mit Lambda-Ausdrücken zum Schreiben von

    public class Test {
        public static void main(String[] args) {
            List<Person> perosnList = new ArrayList<>();
            perosnList.add(new Person("王一", 30, "中国", &#39;M&#39;));
            perosnList.add(new Person("张三", 19, "美国", &#39;F&#39;));
            perosnList.add(new Person("李四", 29, "日本", &#39;F&#39;));
            perosnList.add(new Person("小美", 74, "英国", &#39;M&#39;));
            perosnList.add(new Person("熊二", 15, "意大利", &#39;F&#39;));
            perosnList.add(new Person("熊大", 66, "韩国", &#39;F&#39;));
            //返回年龄大于20岁的学生集合
            System.out.println("返回年龄大于20岁的学生集合");
            perosnList.stream().filter(p -> p.getAge() > 20).forEach(System.out::println);
            //返回年龄大于50岁的学生集合
            System.out.println("返回年龄大于50岁的集合");
            List<Person> list = perosnList.stream().filter(p -> p.getAge() > 50).collect(Collectors.toList());
            System.out.println(list);
            //返回年龄大于20岁的中国学生
            System.out.println("返回年龄大于20岁的中国人");
            perosnList.stream().filter(p -> p.getAge() > 20).filter(p -> p.getCountry().equals("韩国")).forEach(System.out::println);
            //年龄大于20  中国  性别M
            System.out.println("返回年龄大于20  中国  性别M");
            perosnList.stream().filter(p -> p.getAge() > 20 && p.getCountry().equals("中国") && p.getSex() == &#39;M&#39;).forEach(System.out::println);
        }
    }
    #🎜 🎜 #Sehen Sie sich die Ergebnisse an:

    Geben Sie die Sammlung von Schülern zurück, die älter als 20 Jahre sind

    Informationstabelle: {name='王一', Alter=30 , Land ='China', Geschlecht=M}

    Informationstabelle: {name='李思', Alter=29, Land='Japan', Geschlecht=F}

    Informationstabelle: {name= '小Schönheit', Alter=74, Land='UK', Geschlecht=M}

    Informationstabelle: {Name='Xiong Da', Alter=66, Land='Südkorea', Geschlecht=F}# 🎜🎜# Gibt die Sammlung von Personen zurück, die älter als 50 Jahre sind [Informationstabelle: {name='Xiaomei', Alter=74, Land='UK', Geschlecht=M}, Informationstabelle: {name=' Xiong Da', Alter =66, Land='Südkorea', Geschlecht=F}]Zurück zu Chinesen, die älter als 20 Jahre sind

    Informationstabelle: {name='Xiong Da', Alter= 66, Land='Südkorea', Geschlecht=F}
    Zurück zu Personen, die älter als 20 Jahre sind China GeschlechtM

    Informationstabelle: {name='王一', Alter=30, Land=' China', Geschlecht=M}
    # 🎜🎜#

    Zusammenfassung:


    Mit Stream Stream können Arrays oder Sammlungen problemlos bedient werden, und zwar Kombiniert mit Lambda-Ausdrücken, um einen Ausdruck übersichtlich und klar zu gestalten. Da es sich tatsächlich um eine neue Funktion handelt, die von Java freigegeben wurde, muss sie nützlich sein.

    3. Stream-Map-Mapping-Stream

    public class Test {
        public static void main(String[] args) {
            //map的作用是迭代取到每个list元素,再通过map里面的函数进行相应的操作
            List<String> list1 = Arrays.asList("a","bb","ccc","dddd");
            //通过map取到每个集合元素的长度并返回
            Stream<Integer> stream = list1.stream().map(p->p.length());
            stream.forEach(System.out::println);
            System.out.println("----------------");
            List<String> userList = new ArrayList<>();
            userList.add("周杰伦.tom");
            userList.add("尼古拉斯.赵四");
            userList.add("牛顿.巴基斯");
            userList.add("赵少华.思密达");
            List<String> uList = userList.stream().map(p->p.substring(p.indexOf(".")+1,
                    p.length())).collect(Collectors.toList());
            System.out.println(uList.toString());
        }
    }

    Ausgabe:

    1#🎜🎜 # 2

    3

    4

    ----------------

    [tom, Zhao Si, Bachis, Smecta]

    # 🎜🎜#

    4. Stream-Suche und -Abgleich Es gibt auch eine

    -Methode in Stream:


    Gibt zurück, ob ein Element in Dieser Stream entspricht dem bereitgestellten Wort



    Demo:

    public class Test {
        public static void main(String[] args) {
            List<String> list = Arrays.asList("周杰伦","王力宏","孙燕姿","林俊杰");
            boolean flag1 = list.stream().anyMatch(ele->ele.contains("燕"));
            System.out.println("有没有名字包含燕的同学:"+flag1);
            //判断开头:
            boolean flag2 = list.stream().anyMatch(ele->ele.startsWith("王"));
            System.out.println("有没有名字开头是王的同学:"+flag2);
            //判断结尾:
            boolean flag3 = list.stream().anyMatch(ele->ele.endsWith("杰"));
            System.out.println("有没有名字结尾是杰的同学:"+flag3);
            // anyMatch是匹配所有的,要满足条件
            boolean flag4 = list.stream().anyMatch(ele->ele.length()>2);
            System.out.println("所有同学的名字都是两个字以上的吗"+flag4);
            boolean flag5 = list.stream().anyMatch(ele->ele.startsWith("王"));
            System.out.println("所有同学的名字都有王吗?"+flag5);
            //noneMatch
            boolean flag6 = list.stream().noneMatch(ele->ele.contains("燕"));
            System.out.println("集合中都没有包含&#39;燕&#39;这个字吗"+flag5);
        }
    }

    Ausgabe:

    #🎜🎜 # anyMatch(Predicate predicate)

    Gibt es Klassenkameraden, deren Namen Yan: true

    Gibt es Klassenkameraden, deren Namen mit Wang beginnen: true Gibt es Klassenkameraden, deren Namen mit Jie enden? wahrHaben alle Namen der Schüler mehr als zwei Zeichen? wahr

    Haben alle Namen der Schüler einen König? true

    Die Sammlung enthält nicht das Wort „Yan“. true

    Mit der Methode in anyMatch() können die Informationen dieses Streams problemlos abgeglichen werden.

    Das obige ist der detaillierte Inhalt vonAnalysieren Sie Stream-Flow-Instanzen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme
    Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
    Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Mar 17, 2025 pm 05:46 PM

    In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

    Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Mar 17, 2025 pm 05:45 PM

    In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

    Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Mar 17, 2025 pm 05:44 PM

    In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

    Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Mar 17, 2025 pm 05:43 PM

    In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

    Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Mar 17, 2025 pm 05:35 PM

    Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

    See all articles

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Chat -Befehle und wie man sie benutzt
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    MinGW – Minimalistisches GNU für Windows

    MinGW – Minimalistisches GNU für Windows

    Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

    EditPlus chinesische Crack-Version

    EditPlus chinesische Crack-Version

    Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    SublimeText3 Linux neue Version

    SublimeText3 Linux neue Version

    SublimeText3 Linux neueste Version

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung