Lambda表达式

Lambda表达式

区间合并,这道题目,我一开始使用双端队列解决,后来发现过度设计了,直接排序就好了,顺便复习一下java的lambda-使用lambda实现排序功能
语法糖: 指那些不影响功能但提升可读性的语法特性,但是使用要适度哦

class Solution {
    public int[][] merge(int[][] intervals) {
        if (intervals == null || intervals.length == 0) {
            return new int[0][0];
        }

        // 按区间起始位置排序
        Arrays.sort(intervals, Comparator.comparingInt(a -> a[0]));

        List<int[]> merged = new ArrayList<>();
        merged.add(intervals[0]);

        for (int i = 1; i < intervals.length; i++) {
            int[] last = merged.get(merged.size() - 1);
            if (intervals[i][0] <= last[1]) {
                // 合并区间
                last[1] = Math.max(last[1], intervals[i][1]);
            } else {
                merged.add(intervals[i]);
            }
        }

        return merged.toArray(new int[merged.size()][]);
    }
}

lambda 可以简化匿名内部类的书写

/**
 * @author 一只咸鱼的大厂梦-hxw
 * @date 2025-06-05 21:29
 */
public class Main {
    public static void main(String[] args) {
        Integer[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};


        /** 正儿八经的排序
        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2; // 从小到达排序
            }
        });
        System.out.println(Arrays.toString(arr));

         **/
        // 使用lambda 表达式优化匿名内部类(看一下代码编写规则就明白了)

        Arrays.sort(arr, (Integer o1, Integer o2 ) -> {
            return o1 - o2;
        });

        System.out.println(Arrays.toString(arr));
        // 输出[1, 2, 3, 4, 5, 6, 7, 8, 9]
    }
}

lambda表达式是函数式思想的体现

函数式思想

面向对象:例如下面的例子,先找到对象,再让对象做事情

    Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2; // 从小到达排序
            }
        });

函数式编程,忽略面向对象的复杂语法,强调做什么而不是谁去做,更加关注逻辑

/**
	调用一个方法的时候, 如果方法的形参是一个接口,就要传递这个接口的实现类对象
	如果实现类对象要用到一次, 就可以用匿名内部类的形式进行书写
**/
 Arrays.sort(arr, (Integer o1, Integer o2 ) -> {
            return o1 - o2;
        });

lambda表达式格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
回答这道算法题目, 二维的例子


 		Arrays.sort(arr, Comparator.comparingInt(b->b[0]));
        // 等价于
        Arrays.sort(arr, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];
            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值