概念
Stream是java8中处理集合的关键抽象概念,它可以指定你希望是对集合进行的操作,可进行非常复杂的查找过滤和映射数据等操作。
创建Stream
- 方式一
通过Connection系列集合提供的Stream() 或者 parallelStream()来创建
List<Employee> employees = Arrays.asList(
new Employee("张三", 32, 3333.33),
new Employee("李四", 23, 4444.33),
new Employee("李四", 18, 5555.33),
new Employee("李四", 18, 5555.33),
new Employee("李四", 18, 5555.33),
new Employee("赵六", 40, 6666.33),
new Employee("孙七", 40, 7777.33),
new Employee("王八", 66, 8888.33),
new Employee("小九", 66, 9999.33)
);
//创建Stream
Stream<Employee> stream = employees.stream();
- 方式二
通过Arrays 中的静态方法Stream() 获取数组流
String[] strs = {"wo","you","dian","fan","a"};
Stream<String> stream2 = Arrays.stream(strs);
- 方式三
通过Stream类中的静态方法 of() 得到Stream流
Stream<String> stream3 = Stream.of("wo","jue","de","ni","bu","ting","hua");
- 方式四
创建无限流(迭代)
Stream<Integer> stream4 = Stream.iterate(0, (x) -> x+2);
Stream的中间操作
多个中间操作可以连接起来形成一个流水线,除非流水线上触发终止操作,否则中间操作不会执行任何处理!而在终止操作时一次性全部处理,称作“惰性求值”
- filter操作
接受lambda,从流中排除某些元素
//筛选出工资小于6000的员工
stream.filter((emp) -> emp.getSalary() < 6000);
- limit操作
截断流,使其元素不超过给定的数量
//不超过两个
Stream.limit(2);
- skip操作
跳过元素,返回一个可以抛掉前n个元素的流
//抛掉前三个元素
Stream.skip(3);
- distint操作
筛选,通过流所产生的元素的 hashCode() 和 equals() 去掉重复元素(筛选目标需要重写 hashCode() 和 equals() 方法)
stream.distinct();
终止操作
Stream.forEach(System.out::println);
附图:







本文介绍Java 8中的Stream API,一种处理集合数据的高效方式。文章详细讲解了四种创建Stream的方法,包括从集合、数组、静态方法及无限流创建。同时,深入探讨了Stream的中间操作如filter、limit、skip和distinct,以及终止操作如forEach。
1486

被折叠的 条评论
为什么被折叠?



