<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java 流過濾器 原文:http://zetcode.com/java/streamfilter/ Java 流過濾器教程展示了如何使用過濾操作過濾 Java 流。 ## Java 流 Java 流是來自源的支持聚合操作的一系列元素。 流不存儲元素。 元素是按需計算的。 元素是從數據源(如集合,數組或 I/O 資源)中消耗的。 流聚合操作類似于 SQL 操作。 我們可以對流應用過濾,映射,縮小,匹配,搜索或排序操作。 流允許鏈接多個流操作。 與使用外部迭代的集合不同,流在內部進行迭代。 ## Java 流過濾器 Java 流過濾器方法是一個中間操作,它返回與給定謂詞匹配的流元素。 謂詞是一個返回布爾值的函數。 ## Java 流過濾器字符串長度 下面的示例過濾字符串列表。 `JavaStreamFilterStringLength.java` ```java package com.zetcode; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class JavaStreamFilterStringLength { public static void main(String[] args) { List<String> words = Arrays.asList("pen", "custom", "orphanage", "forest", "bubble", "butterfly"); List<String> result = words.stream().filter(word -> word.length() > 5) .collect(Collectors.toList()); result.forEach(word -> System.out.println(word)); } } ``` 我們有一個單詞表。 我們過濾列表以僅包括長度大于 5 的字符串。 ```java List<String> result = words.stream().filter(word -> word.length() > 5) .collect(Collectors.toList()); ``` 使用`stream()`方法,我們從字符串列表創建 Java 流。 在此流上,我們應用`filter()`方法。 `filter()`方法接受匿名函數,該函數對長度大于 5 的流的所有元素返回布爾值`true`。 我們使用`collect()`方法從流中創建一個列表。 ```java result.forEach(word -> System.out.println(word)); ``` 我們使用`forEach()`方法遍歷結果并將其所有元素打印到控制臺。 ```java custom orphanage forest bubble butterfly ``` 這些單詞有五個以上的字符。 ## Java 流過濾器空值 下一個示例過濾掉`null`值。 `JavaStreamFilterRemoveNulls.java` ```java package com.zetcode; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class JavaStreamFilterRemoveNulls { public static void main(String[] args) { List<String> words = Arrays.asList("cup", null, "forest", "sky", "book", null, "theatre"); List<String> result = words.stream().filter(w -> w != null) .collect(Collectors.toList()); System.out.println(result); } } ``` 我們有一個單詞表。 通過流過濾操作,我們創建了一個新列表,其中刪除了`null`值。 ```java List<String> result = words.stream().filter(w -> w != null) .collect(Collectors.toList()); ``` 在 lambda 表達式的主體中,我們檢查值是否不是`null`。 `collect()`方法是一種終端操作,可從過濾后的流中創建列表。 ```java [cup, forest, sky, book, theatre] ``` 最終輸出中沒有`null`值。 ## Java 流多個過濾器操作 可以對流應用多個過濾器操作。 `JavaStreamMultipleFilters.java` ```java package com.zetcode; import java.util.Arrays; import java.util.function.IntConsumer; public class JavaStreamMultipleFilters { public static void main(String[] args) { int[] inums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; IntConsumer icons = i -> System.out.print(i + " "); Arrays.stream(inums).filter(e -> e < 6 || e > 10) .filter(e -> e % 2 == 0).forEach(icons); } } ``` 在示例中,我們對整數流應用了多個過濾操作。 ```java int[] inums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; ``` 我們有一個整數值數組。 ```java IntConsumer icons = i -> System.out.print(i + " "); ``` `IntConsumer`是一個接受單個整數值參數且不返回結果的操作。 ```java Arrays.stream(inums).filter(e -> e < 6 || e > 10) .filter(e -> e % 2 == 0).forEach(icons); ``` 使用`Arrays.stream()`方法從數組創建流。 執行多個過濾操作。 ```java 2 4 12 14 ``` 這些整數滿足所有過濾條件。 ## Java 流過濾器對象 下一個示例顯示了如何過濾對象。 `User.java` ```java package com.zetcode; public class User { private String name; private String email; public User(String name, String email) { this.name = name; this.email = email; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } ``` 在示例中,我們使用此`User`類。 `JavaStreamFilterObjects.java` ```java package com.zetcode; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class JavaStreamFilterObjects { public static void main(String[] args) { List<User> persons = Arrays.asList( new User("Jack", "jack234@gmail.com"), new User("Peter", "pete2@post.com"), new User("Lucy", "lucy17@gmail.com"), new User("Robert", "bob56@post.com"), new User("Martin", "mato4@imail.com") ); List<User> result = persons.stream() .filter(person -> person.getEmail().matches(".*post\\.com")) .collect(Collectors.toList()); result.forEach(p -> System.out.println(p.getName())); } } ``` 該示例創建`User`對象的流。 它過濾與特定正則表達式匹配的那些。 ```java List<User> result = persons.stream() .filter(person -> person.getEmail().matches(".*post\\.com")) .collect(Collectors.toList()); ``` 在過濾謂詞中,我們選擇與`.*post\\.com`模式匹配的電子郵件。 ```java Peter Robert ``` 這兩個用戶的電子郵件與常規模式匹配。 ## Java 流過濾器按鍵映射 在以下示例中,我們通過映射的鍵過濾映射。 `JavaStreamFilterMapByValues.java` ```java package com.zetcode; import java.util.HashMap; import java.util.Map; public class JavaStreamFilterMapByKeys { public static void main(String[] args) { Map<String, String> hmap = new HashMap<>(); hmap.put("de", "Germany"); hmap.put("hu", "Hungary"); hmap.put("sk", "Slovakia"); hmap.put("si", "Slovenia"); hmap.put("so", "Somalia"); hmap.put("us", "United States"); hmap.put("ru", "Russia"); hmap.entrySet().stream().filter(map -> map.getKey().startsWith("s")) .forEach(m -> System.out.println(m)); } } ``` 該示例過濾以`s`字母開頭的域名。 ```java si=Slovenia sk=Slovakia so=Somalia ``` 這是示例的輸出。 ## Java 流過濾器按值映射 在以下示例中,我們根據映射的值過濾映射。 `JavaStreamFilterMapByValues.java` ```java package com.zetcode; import java.util.HashMap; import java.util.Map; public class JavaStreamFilterMapByValues { public static void main(String[] args) { Map<String, String> hmap = new HashMap<>(); hmap.put("de", "Germany"); hmap.put("hu", "Hungary"); hmap.put("sk", "Slovakia"); hmap.put("si", "Slovenia"); hmap.put("so", "Somalia"); hmap.put("us", "United States"); hmap.put("ru", "Russia"); hmap.entrySet().stream().filter(map -> map.getValue().equals("Slovakia") || map.getValue().equals("Slovenia")) .forEach(m -> System.out.println(m)); } } ``` 在示例中,我們從映射中過濾出兩個國家。 ```java si=Slovenia sk=Slovakia ``` 這是輸出。 在本教程中,我們已經處理過 Java 流過濾操作。 您可能也對相關教程感興趣: [Java 流](/lang/java/streams/),[Java 流歸約](/java/streamreduce/),[Java 流映射](/java/streammap/),[Java8 `forEach`教程](/articles/java8foreach/),和[用 Java 過濾列表](/articles/javafilterlist/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看