java Stream结合函数方法

java Stream结合函数方法,第1张

java Stream结合函数方法

本教程 *** 作环境:windows7系统、java10版,DELL G3电脑。

1.映射

如果想通过某种 *** 作把一个流中的元素转化成新的流中的元素,可以使用 map() 方法。

public class MapStreamDemo {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("周杰伦");
        list.add("王力宏");
        list.add("陶喆");
        list.add("林俊杰");
        Stream stream = list.stream().map(String::length);
        stream.forEach(System.out::println);
    }
}

2.排序

    public  void test3(){
        //(1)自然排序
        List list  = Arrays.asList(4,3,7,9,12,8,10,23,2);
        Stream stream = list.stream();
        stream.sorted().forEach(System.out::println);
        //(2)对象排序:对象类可以先实现comparable接口,或者是直接指定
        //第一种:先实现compable接口
        List studentList  = StudentData.getStudents();
        studentList.stream().sorted().forEach(System.out::println);
        //第二种:直接指定comparable
        List studentList1  = StudentData.getStudents();
        studentList1.stream()
                .sorted((e1,e2)-> Integer.compare(e1.getAge(),e2.getAge()))
                .forEach(System.out::println);
    }

3.组合

reduce() 方法的主要作用是把 Stream 中的元素组合起来,它有两种用法:

Optional reduce(BinaryOperator accumulator)

没有起始值,只有一个参数,就是运算规则,此时返回 Optional。

T reduce(T identity, BinaryOperator accumulator)

有起始值,有运算规则,两个参数,此时返回的类型和起始值类型一致。

public class ReduceStreamDemo {
    public static void main(String[] args) {
        Integer[] ints = {0, 1, 2, 3};
        List list = Arrays.asList(ints);
 
        Optional optional = list.stream().reduce((a, b) -> a + b);
        Optional optional1 = list.stream().reduce(Integer::sum);
        System.out.println(optional.orElse(0));
        System.out.println(optional1.orElse(0));
 
        int reduce = list.stream().reduce(6, (a, b) -> a + b);
        System.out.println(reduce);
        int reduce1 = list.stream().reduce(6, Integer::sum);
        System.out.println(reduce1);
    }
}

以上就是关于java Stream映射、排序和组合的 *** 作方法介绍,根据上面的简单分析运行代码节课实现,下次遇到这类问题,可以考虑下使用Stream来解决。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3017666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-28
下一篇 2022-09-28

发表评论

登录后才能评论

评论列表(0条)

保存