Inhaltsverzeichnis
Streamflow
1. Was ist Stream:
[tom, Zhao Si, Bachis, Smecta]
Heim Java javaLernprogramm Analysieren Sie Stream-Flow-Instanzen in Java

Analysieren Sie Stream-Flow-Instanzen in Java

May 09, 2023 pm 04:10 PM
java stream

    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
    Nach dem Login kopieren

    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());
        }
    }
    Nach dem Login kopieren

    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);
        }
    }
    Nach dem Login kopieren

    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);
        }
    }
    Nach dem Login kopieren
    #🎜 🎜 #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());
        }
    }
    Nach dem Login kopieren

    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);
        }
    }
    Nach dem Login kopieren

    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!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    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)
    2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    Repo: Wie man Teamkollegen wiederbelebt
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

    Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

    Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

    Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

    Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

    Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

    Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

    Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

    Armstrong-Zahl in Java Armstrong-Zahl in Java Aug 30, 2024 pm 04:26 PM

    Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

    Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

    Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

    Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

    In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

    Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

    Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

    See all articles