Loading... ## 一、Stream的创建 ### 1.1 通过已有的集合创建流 ```java // 1.1.使用集合类创建stream流 List<String> list = new ArrayList<String>(){{ add("0011"); add("456"); add("123"); }}; final Stream<String> stream = list.stream(); ``` ### 1.2 通过Stream创建流 ```java // 1.2.使用Stream.of() final Stream<String> stringStream = Stream.of("0011", "123", "456"); ``` ## 二、Stream的中间操作 ### 2.1 filter设置条件过滤元素 ```java // 2.1.filter 过滤元素 final List<String> collect = stringStream.filter(str -> str.length() < 4).collect(Collectors.toList()); ``` ### 2.2 map映射每个元素到对应的结果集 ```java // 2.2.map映射每个元素到对应的结果 final List<Integer> collect1 = stream.map(String::length).collect(Collectors.toList()); ``` ### 2.3 limit、skip截取 ```java // 2.3.limit返回stream的前n个元素,skip扔掉前n个元素 final Stream<String> stream1 = list.stream(); final List<String> collect2 = stream1.skip(1).limit(1).collect(Collectors.toList()); ``` ### 2.4 sorted 流中元素排序 ```java // 2.4.sorted对stream流元素排序 final Stream<String> stream2 = list.stream(); final List<String> collect3 = stream2.sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList()); ``` ### 2.5 distinct 去重 ```java // 2.5.distinct对stream流元素去重 final Stream<String> stream3 = Stream.of("111", "222", "111", "222"); final List<String> collect4 = stream3.distinct().collect(Collectors.toList()); ``` ## 三、Stream最终操作 ### 3.1forEach迭代流中每个数据 ```java // 3.1 forEach迭代流中每一个数据 final Random random = new Random(); // 生成2个随机数字 random.ints().limit(2).forEach(System.out::println); ``` ### 3.2 count统计流中元素个数 ```java // 3.2 count统计流中元素个数 final long count = Stream.of("123", "456", "789", "001").count(); ``` ### 3.3 collect收集 ```java // 3.3 collect汇总,一般我们会汇总成一个集合 final List<String> collect5 = Stream.of("123", "456", "789", "001").collect(Collectors.toList()); ``` 最后修改:2023 年 01 月 16 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果文章有用,请随意打赏。