ToB企服应用市场:ToB评测及商务社交产业平台

标题: Stream API [打印本页]

作者: 钜形不锈钢水箱    时间: 2022-8-9 14:44
标题: Stream API
Stream API

一.创建Stream
  1. //1.Colleaction系列集合提供
  2. List<String> list = new ArrayList<>();
  3. Stream<String> stream = list.stream();
  4. //2.Arrays的静态方法stream();
  5. Employee[] emps = new Employee[10];
  6. Stream<String> stream = Arrays.stream(array);
  7. //3.通过Stream.of
  8. Stream<String> stream = Stream.of("aaa","bbb","ccc");
  9. //4.创建无线流
  10. Stream<Integer> stream = Stream.iterate(0,(x) -> x+2);
复制代码
二.中间操作

中间操作不会执行任何操作,只有出现终止操作才会一次性执行全部内容,即:“惰性求值”
1.filter()过滤

过滤条件
2.limit(Long maxnum)

限制个数
出现短路,限制出现俩条之间进行短路不进行迭代操作,提高了效率
3.skip()和limit互补跳过

4.去重distinct,通过hashcode和equals方法

5.映射

map接收一个Lambda,将元素转换为其他形式,或提取信息。
接收一个函数作为参数,该函数还会应用到每个元素上,并将其映成一个新的元素。
flatMap 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连成一个流
类比add(),addAll()两个方法
  1. list.stream()
  2.     .map((str) -> str.toUpperCase())
  3.     .forEach(System.out::println);
  4. employeeList.stream
  5.     .map(Employee::getName)
  6.     .forEach(System.out::println);
复制代码
6.排序

sorted(Comparable自然排序)
sorted(Comparator com)(Comparator 定制排序)
  1. //先按年龄排,年龄相同按姓名排
  2. employees.stream()
  3.     .sorted((e1,e2) -> {
  4.         if(e1.getAge().equals(e2.getAge())){
  5.             return e1.getName().comparaTo(e2.getName());
  6.         }else{
  7.             return e1.getAge().comparaTo(e2.getAge());
  8.         }
  9.     }).forEach(System.out::println);
复制代码
三.终止操作

查找与匹配
1.allMatch();检查是否匹配所有元素

2.anyMatch();检查是否至少匹配一个元素

3.noneMatch();检查没有匹配所有元素

4.findFrist()返回第一个,返回Optional

5.findany返回任意一个,返回Optional

6.count返回总个数

7.max(comparator)返回最大值

8.min(comparator)返回最小值

Optional是有可能为空的一个封装容器类,解决空指针问题,有一个op.orElse()如果为空就应用这个orelse()进行替代,避免空指针
归约

将流中元素反复结合起来得到一个值
identity起始值
binaryOperator
1.reduce()

map-reduce
收集

Collector

Collectors工具类
  1. List<String> list = employees.stream()
  2.     .map(employee::getName)
  3.     .collect(Collectors.toList());
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4