其他分享
首页 > 其他分享> > Stream API

Stream API

作者:互联网

Stream API

一.创建Stream

//1.Colleaction系列集合提供
List<String> list = new ArrayList<>();
Stream<String> stream = list.stream();

//2.Arrays的静态方法stream();
Employee[] emps = new Employee[10];
Stream<String> stream = Arrays.stream(array);

//3.通过Stream.of
Stream<String> stream = Stream.of("aaa","bbb","ccc");

//4.创建无线流

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()两个方法

list.stream()
    .map((str) -> str.toUpperCase())
    .forEach(System.out::println);

employeeList.stream
    .map(Employee::getName)
    .forEach(System.out::println);


6.排序

sorted(Comparable自然排序)

sorted(Comparator com)(Comparator 定制排序)

//先按年龄排,年龄相同按姓名排
employees.stream()
    .sorted((e1,e2) -> {
        if(e1.getAge().equals(e2.getAge())){
            return e1.getName().comparaTo(e2.getName());
        }else{
            return e1.getAge().comparaTo(e2.getAge());
        }
    }).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工具类

List<String> list = employees.stream()
    .map(employee::getName)
    .collect(Collectors.toList());

标签:map,Stream,stream,getName,元素,list,API
来源: https://www.cnblogs.com/Arborblog/p/16409881.html