亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java?Stream流怎么生成和操作

發布時間:2022-09-19 14:08:17 來源:億速云 閱讀:113 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Java Stream流怎么生成和操作”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Java Stream流怎么生成和操作”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一、Stream流簡單示例

需求:

按照要求集合創建和遍歷

創建一個結合,存儲多個字符串元素

把集合中所有以"張"開頭的元素存儲到一個新的集合

把"張"開頭的集合中的長度為3的元素存儲到一個新的集合

遍歷上一步得到集合

原始方式示例代碼:

public class StreamDemo {
    public static void main(String[] args) {
        //創建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張天坤");
 
        //把集合中所有以"張"開頭的元素存儲到一個新的集合 
        ArrayList<String> zhangList = new ArrayList<String>();
 
        for(String s : list) {
            if(s.startsWith("張")) {
                zhangList.add(s);
            }
        }
 
        // System.out.println(zhangList); 
 
        //把"張"開頭的集合中的長度為3的元素存儲到一個新的集合 
        ArrayList<String> threeList = new ArrayList<String>();
 
        for(String s : zhangList) {
            if(s.length() == 3) {
                threeList.add(s);
            }
        }
 
        // System.out.println(threeList); 
 
        //遍歷上一步得到的集合 
        for(String s : threeList) {
            System.out.println(s);
        }
 
        System.out.println("--------");
        //Stream流來改進 
        // list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length() == 3).forEach(s -> System.out.println(s));
        list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length() == 3).forEach(System.out::println);
    }
}

使用Stream流示例代碼:

public class StreamDemo {
    public static void main(String[] args) {
        //創建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張天坤");
 
        //Stream流來改進
        list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length() ==
                3).forEach(System.out::println);
    }
}

二、Stream流常見生成方式

生成Stream流的方式:

Collection體系集合

使用默認方法stream()生成流,default Stream stream()

Map體系集合

把Map轉成Set集合,間接生成流

數組

通過Stream接口的靜態方法of(T...values)生成流

代碼演示:

public class StreamDemo {
    public static void main(String[] args) {
        //Collection體系的集合可以使用默認方法stream()生成流 
        List<String> list = new ArrayList<String>();
        Stream<String> listStream = list.stream();
 
        Set<String> set = new HashSet<String>();
        Stream<String> setStream = set.stream();
 
        //Map體系的集合間接的生成流 
        Map<String,Integer> map = new HashMap<String, Integer>();
        Stream<String> keyStream = map.keySet().stream();
        Stream<Integer> valueStream = map.values().stream();
        Stream<Map.Entry<String, Integer>> entryStream = map.entrySet().stream();
 
        //數組可以通過Stream接口的靜態方法of(T... values)生成流 
        String[] strArray = {"hello","world","java"};
        Stream<String> strArrayStream = Stream.of(strArray);
        Stream<String> strArrayStream2 = Stream.of("hello", "world", "java");
        Stream<Integer> intStream = Stream.of(10, 20, 30);
    }
}

三、Stream流中間操作方法

概念:

中間操作的意思是,執行完成此方法之后,Stream流依然可以繼續執行其他操作

常見方法:

方法名說明
Stream fifilter(Predicate predicate)用于對流中的數據進行過濾
Stream limit(long maxSize)返回此流中的元素組成的流,截取前指定參數個數的數據
Stream skip(long n)跳過指定參數個數的數據,返回由該流的剩余元素組成的流
static Stream concat(Stream a, Stream b)合并a和b兩個流為一個流
Stream distinct()返回由該流的不同元素(根據Object.equals(Object) )組成的流
Stream sorted()返回由此流的元素組成的流,根據自然順序排序
Stream sorted(Comparator comparator)返回由該流的元素組成的流,根據提供的Comparator進行排序
Stream map(Function mapper)返回由給定函數應用于此流的元素的結果組成的流
IntStream mapToInt(ToIntFunction mapper)返回一個IntStream其中包含將給定函數應用于此流的元素的結果

filter代碼示例

public class StreamDemo01 {
    public static void main(String[] args) {
        //創建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張天坤");
 
        //需求1:把list集合中以張開頭的元素在控制臺輸出 
        list.stream().filter(s -> s.startsWith("張")).forEach(System.out::println);
        System.out.println("--------");
 
        //需求2:把list集合中長度為3的元素在控制臺輸出 
        list.stream().filter(s -> s.length() == 3).forEach(System.out::println);
        System.out.println("--------");
 
        //需求3:把list集合中以張開頭的,長度為3的元素在控制臺輸出 
        list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length() ==
                3).forEach(System.out::println);
    }
}

limit&skip代碼示例

public class StreamDemo02 {
    public static void main(String[] args) {
        //創建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張天坤");
 
        //需求1:取前3個數據在控制臺輸出 
        list.stream().limit(3).forEach(System.out::println);
        System.out.println("--------");
 
        //需求2:跳過3個元素,把剩下的元素在控制臺輸出 
        list.stream().skip(3).forEach(System.out::println);
        System.out.println("--------");
 
        //需求3:跳過2個元素,把剩下的元素中前2個在控制臺輸出 
        list.stream().skip(2).limit(2).forEach(System.out::println);
    }
}

concat&distinct代碼示例

public class StreamDemo03 {
    public static void main(String[] args) {
        //創建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張天坤");
 
        //需求1:取前4個數據組成一個流 
        Stream<String> s1 = list.stream().limit(4);
 
        //需求2:跳過2個數據組成一個流 
        Stream<String> s2 = list.stream().skip(2);
 
        //需求3:合并需求1和需求2得到的流,并把結果在控制臺輸出 
        Stream.concat(s1,s2).forEach(System.out::println); 
 
        //需求4:合并需求1和需求2得到的流,并把結果在控制臺輸出,要求字符串元素不能重復 
        Stream.concat(s1,s2).distinct().forEach(System.out::println);
    }
}

sorted代碼示例

public class StreamDemo04 {
    public static void main(String[] args) {
        //創建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("linqingxia");
        list.add("zhangmanyu");
        list.add("wangzuxian");
        list.add("liuyan");
        list.add("zhangmin");
        list.add("zhangwuji");
 
        //需求1:按照字母順序把數據在控制臺輸出 
        list.stream().sorted().forEach(System.out::println); 
 
        //需求2:按照字符串長度把數據在控制臺輸出 
        list.stream().sorted((s1,s2) -> {
            int num = s1.length()-s2.length();
            int num2 = num==0?s1.compareTo(s2):num;
            return num2;
        }).forEach(System.out::println);
    }
}

map&mapToInt代碼示例

public class StreamDemo05 {
    public static void main(String[] args) {
        //創建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("10");
        list.add("20");
        list.add("30");
        list.add("40");
        list.add("50");
 
        //需求:將集合中的字符串數據轉換為整數之后在控制臺輸出 
        list.stream().map(s -> Integer.parseInt(s)).forEach(System.out::println); 
        list.stream().map(Integer::parseInt).forEach(System.out::println); 
        list.stream().mapToInt(Integer::parseInt).forEach(System.out::println); 
 
        //int sum() 返回此流中元素的總和 
        int result = list.stream().mapToInt(Integer::parseInt).sum();
        System.out.println(result);
    }
}

讀到這里,這篇“Java Stream流怎么生成和操作”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西畴县| 太保市| 和田市| 江口县| 兰溪市| 波密县| 新营市| 平山县| 吉木萨尔县| 迁安市| 溧水县| 赞皇县| 米林县| 二连浩特市| 莱州市| 南投县| 聊城市| 抚州市| 南部县| 营口市| 绩溪县| 贺兰县| 徐汇区| 江门市| 阿坝县| 乐至县| 平武县| 江油市| 平阴县| 汉川市| 上高县| 兰溪市| 屏东县| 昌宁县| 开化县| 瑞金市| 阿尔山市| 南皮县| 星座| 广元市| 达尔|