Java教程

JavaSE-23.2.1【Strem流、Stream流的使用和常见生成方式】

本文主要是介绍JavaSE-23.2.1【Strem流、Stream流的使用和常见生成方式】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
 1 package day14.lesson2;
 2 
 3 import java.util.ArrayList;
 4 
 5 /*
 6 2 Strem流
 7 
 8 2.1 体验Stream流
 9 
10     案例需求
11         按照下面的要求完成集合的创建和遍历
12         创建一个集合,存储多个字符串元素
13         把集合中所有以"张"开头的元素存储到一个新的集合
14         把"张"开头的集合中的长度为3的元素存储到一个新的集合
15         遍历上一步得到的集合
16 
17     Stream流的好处
18         直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:获取流、过滤姓张、过滤长度为3、逐一打印
19         Stream流把真正的函数式编程风格引入到Java中
20  */
21 public class Demo1Stream {
22     public static void main(String[] args) {
23         ArrayList<String> arrayList = new ArrayList<>();
24         arrayList.add("tom");
25         arrayList.add("张盼");
26         arrayList.add("张无忌");
27         arrayList.add("sam");
28         arrayList.add("amy");
29         arrayList.add("张曼玉");
30 
31         //传统方式实现
32         /*ArrayList<String> zhangList = new ArrayList<>();
33         for (String str: arrayList){
34             if(str.startsWith("张")){
35                 zhangList.add(str);
36             }
37         }
38         System.out.println(zhangList); //[张盼, 张无忌, 张曼玉]
39         ArrayList<String> threeList = new ArrayList<>();
40         for (String str: zhangList){
41             if (str.length() == 3){
42                 threeList.add(str);
43             }
44         }
45         System.out.println(threeList); //[张无忌, 张曼玉]
46         for (String str: threeList){
47             System.out.println(str);
48         }*/
49 
50         //Stream流实现
51         //通常Stream流要搭配函数式接口/Lambda表达式来使用
52         arrayList.stream().filter(s -> s.startsWith("张")).filter(s -> s.length()==3).forEach(s -> System.out.println(s));
53         //也可以用方法引用代替其中的Lambda
54         arrayList.stream().filter(s -> s.startsWith("张")).filter(s -> s.length()==3).forEach(System.out::println);
55     }
56 }

 

 

 

 

 1 package day14.lesson2;
 2 
 3 import java.util.*;
 4 import java.util.stream.Stream;
 5 
 6 /*
 7 2.2 Stream流的使用和常见生成方式
 8 
 9     Stream流的使用(见上例图)
10         生成流
11             通过数据源(集合、数组等)生成流
12             list.stream()
13         中间操作
14             一个流后面可以跟随0个或多个中间操作,
15             其目的是打开流,做出某种程度的数据过滤/映射,返回一个新流,交给下一个操作使用
16             filter()
17         终结操作
18             一个流只能有一个终结操作,且终结操作必定是流的最后一个操作
19             当这个操作执行后,流就被用'光'了,无法再被操作
20             forEach()
21 
22     生成Stream流的方式
23         Collection体系集合
24             使用默认方法stream()生成流,default Stream<E> stream()
25         Map体系集合
26             Map不能直接生成流,可以间接的生成流
27         数组
28             通过Stream接口的静态方法of(T... values)生成流
29  */
30 public class Demo2Stream {
31     public static void main(String[] args) {
32         List<String> list = new ArrayList<>();
33         Stream<String> listStream = list.stream();
34 
35         Set<String> set = new HashSet<>();
36         Stream<String> setStream = set.stream();
37 
38         Map<String, Integer> map = new HashMap<>();
39         Stream<String> keyStream = map.keySet().stream(); //键流
40         Stream<Integer> valueStream = map.values().stream(); //值流
41         Stream<Map.Entry<String, Integer>> entryStream = map.entrySet().stream(); //键值对流
42 
43         String[] strArr = {"hello", "world", "java"};
44         Stream<String> strArrStream = Stream.of(strArr);
45         Stream<String> strArrStream2 = Stream.of("hello", "world", "java");
46         Stream<Integer> intArrStream = Stream.of(10, 20, 30);
47     }
48 }

 

这篇关于JavaSE-23.2.1【Strem流、Stream流的使用和常见生成方式】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!