【Java】Java开发中你需要掌握的Lambda表达式

        Lambda表达式是Java 8引入的一种新的语法结构,用于简化匿名内部类的编写。它主要用于函数式编程,使代码更加简洁和易读。Lambda表达式的主要作用是提供一种简洁的方式来定义和传递函数式接口的实例。

目录

1.使用Lambda表达式对集合进行遍历

2.使用Lambda表达式对集合进行排序

3.使用Lambda表达式对集合进行过滤

4.使用Lambda表达式对集合进行映射

5.使用Lambda表达式对集合进行求和

6.使用Lambda表达式对集合进行分组

7.使用Lambda表达式进行线程的创建

8.使用Lambda表达式进行Optional的创建

9.使用Lambda表达式进行stream流操作

10.使用Lambda表达式进行函数式接口的实现


1.使用Lambda表达式对集合进行遍历

         List<Integer> integerList = Arrays.asList(2, 21, 6, 5);
        /**
         * 1.对集合进行遍历
         * */
        // 1.1未使用Lambda表达式进行遍历
        integerList.forEach(System.out::println);
        for (Integer s : integerList) {
            System.out.println(s);
        }
        // 1.2使用Lambda表达式进行遍历
        integerList.forEach(s -> System.out.println(s));

2.使用Lambda表达式对集合进行排序

        /**
         * 2.对集合进行排序
         * */
        // 2.1未使用Lambda表达式进行排序
        integerList.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        });

        Collections.sort(integerList, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        });
        // 2.2使用Lambda表达式进行排序
        integerList.sort((o1, o2) -> o1.compareTo(o2));
        Collections.sort(integerList, (o1, o2) -> o1.compareTo(o2));
        // 测试结果
        integerList.forEach(s -> System.out.println(s));

3.使用Lambda表达式对集合进行过滤

        /**
         * 3.对集合进行过滤
         * */
        // 3.1未使用Lambda表达式进行过滤
        List<Integer> filterList = new ArrayList<>();
        for (Integer i : integerList) {
            if (i > 10) {
                filterList.add(i);
            }

        }
        // 3.2使用Lambda表达式进行过滤
        filterList = integerList.stream().filter(i -> i > 10).collect(Collectors.toList());
        // 测试结果
        filterList.forEach(s -> System.out.println(s));

4.使用Lambda表达式对集合进行映射

        /**
         * 4.对集合进行映射
         * */
        // 4.1未使用Lambda表达式进行映射
        List<Integer> mapList = new ArrayList<>();
        for (Integer i : integerList) {
            mapList.add(i + 1);
        }
        // 4.2使用Lambda表达式进行映射
        mapList = integerList.stream().map(i -> i + 1).collect(Collectors.toList());
        // 测试结果
        mapList.forEach(s -> System.out.println(s));

5.使用Lambda表达式对集合进行求和

        /**
         * 5.对集合进行求和
         * */
        // 5.1未使用Lambda表达式进行求和
        int sum = 0;
        for (Integer i : integerList) {
            sum += i;
        }
        // 5.2使用Lambda表达式进行求和
        sum = integerList.stream().reduce(0, (a, b) -> a + b);
        // 测试结果
        System.out.println(sum);

6.使用Lambda表达式对集合进行分组

         /**
         * 6.对集合进行分组
         * */
        // 6.1未使用Lambda表达式进行分组
        Map<Boolean, List<Integer>> groupMap = new HashMap<>();
        for (Integer i : integerList) {
            boolean isEven = (i % 2 == 0);
            // 获取或创建一个新的List
            List<Integer> list = groupMap.get(isEven);
            // 如果list为null,则创建一个新的List并将其添加到groupMap中
            if (list == null) {
                list = new ArrayList<>();
                groupMap.put(isEven, list);
            }
            // 将i添加到list中
            list.add(i);
        }
        // 6.2使用Lambda表达式进行分组
        for (Integer i : integerList) {
            boolean isEven = (i % 2 == 0);
            groupMap.computeIfAbsent(isEven, k -> new ArrayList<>()).add(i);
        }
        // 测试结果
        groupMap.forEach((k, v) -> System.out.println(k + ":" + v));

7.使用Lambda表达式进行线程的创建

        /**
         * 7.进行线程的创建
         * */
        // 7.1未使用Lambda表达式进行线程的创建
        Thread thread = new Thread(() -> {
            System.out.println("Hello World!");
        });
        thread.start();
        // 7.2使用Lambda表达式进行线程的创建
        Thread thread1 = new Thread(() -> System.out.println("Hello Lambda!"), "MyThread");
        thread1.start();

8.使用Lambda表达式进行Optional的创建

        /**
         * 8.进行Optional的创建
         * optional的作用:Optional类是一个容器,可以用来存储任意类型的对象,并且可以保证在对象为空的情况下不会抛出NullPointerException异常。
         * */
        // 8.1未使用Lambda表达式进行Optional的创建
        String str = "hello";
        Optional<String> optional = Optional.ofNullable(str);
        // 如果optional不为空,则输出它的值
        if (optional.isPresent()) {
            System.out.println(optional.get());
        }
        // 8.2使用Lambda表达式进行Optional的创建
        Optional<String> optional1 = Optional.of(Optional.ofNullable(str).orElseGet(() -> "defaultValue"));
        // 如果optional不为空,则输出它的值
        optional1.ifPresent(System.out::println);

9.使用Lambda表达式进行stream流操作

        /**
         * 9.进行stream流操作
         * */
        List<String> stringList = Arrays.asList("aaaac", "bbbbc", "cccccd");
        // 9.1未使用Lambda表达式进行stream流操作
        List<String> streamList = new ArrayList<>();
        for (String s : stringList) {
            if(s.endsWith("d")){
                streamList.add(s.toUpperCase());
            }
        }
        for (String s : streamList) {
            System.out.println(s);
        }

        // 9.2使用Lambda表达式进行stream流操作
        stringList.stream().filter(s -> s.endsWith("d")).map(String::toUpperCase).forEach(System.out::println);

10.使用Lambda表达式进行函数式接口的实现

        /**
         * 10.进行函数式接口的实现
         * */
        // 10.1未使用Lambda表达式进行函数式接口的实现
        public interface MyFunction {
            void getValue(String i);
        }

        MyFunction myFunction = new MyFunction() {
            @Override
            public void getValue(String i) {
                 System.out.println(i);
            }
        };
        myFunction.getValue("123");

        // 10.2使用Lambda表达式进行函数式接口的实现
        MyFunction myFunction1 = i -> System.out.println(i);
        myFunction1.getValue("123");

如果觉得上述对你有帮助,也可以到我的主页看看,说不定有你喜欢的文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mxin5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值