Java8 Lambda编程常用技巧

遍历打印List

List<Integer> list= Arrays.asList(1,5,6,8,9,32,5,8,7,4,5);
list.forEach(System.out::println);

排序

List<Integer> list = Arrays.asList(1, 5, 6, 8, 9, 32, 5, 8, 7, 4, 5);
list.sort((o1, o2) -> o1-o2);

过滤

List<Integer> list = Arrays.asList(1, 5, 6, 8, 9, 32, 5, 8, 7, 4, 5);
list.stream().filter(num -> num>10).forEach(System.out::println);

注:过滤器 不会影响 原来的列表

        List<Integer> list3 = Arrays.asList(1, 6, 4, 3, 2, 8, 4, 3);
        List<Integer> list3Res = list3.stream().filter(new Predicate<Integer>() {
            @Override
            public boolean test(Integer num) {
                return num == 3;
            }
        }).collect(Collectors.toList());
        System.out.println(list3Res); // [3, 3]

filter: 会移除不符合条件的数据

从一个list生成另一个list1数据

List<String> list=Arrays.asList("apple","banana","orange");
List<Integer> list2=list.stream().map(String::length).collect(Collectors.toList());

注:map 对管道流通的每个元素进行一个转换处理

累加

List<Integer> list = Arrays.asList(1, 5, 6, 8, 9, 32, 5, 8, 7, 4, 5);
Integer reduce = list.stream().reduce(0, (o1, o2) -> o1 + o2);
/**
 * indentity 起始值
 * (o1, o2) -> o1 + o2  等于 o1=o1+o2
 */
T reduce(T identity, BinaryOperator<T> accumulator);

分组

List<String> list=Arrays.asList("apple","banana","orange");
Map<Integer,List<String>> group=list.stream().collect(Collectors.groupingBy(String::length));

转换大小写

Optional.ofNullable("hello,world").map(String::toUpperCase).ifPresent(System.out::println);

排序及获取最大值

        List<Integer> list1 = Arrays.asList(1, 6, 4, 3, 2, 8, 4, 3);
        list1.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
        System.out.println(list1);// [1, 2, 3, 3, 4, 4, 6, 8]
    

        List<Integer> list2 = Arrays.asList(1, 6, 4, 3, 2, 8, 4, 3);
        Optional<Integer> max = list2.stream().max(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
        System.out.println(max.orElse(null));// 8

o1-o2 : 表示从小到大排序
max :是取最后一个值

posted @   帅气的涛啊  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示

目录