通过Arrays.sort对int数组进行逆序报错

通过Arrays.sort对int数组进行逆序报错


Java的Arrays.sort()仅支持对 引用数据类型进行自定义排序,如果是基本数据类型(如int类型),将无法使用Comparator进行自定义排序。

昨天在做一个算法题需要对int数组进行排序,使用了匿名内部类报错

    int[] arr=newint[]{1,2,3,4};
    Arrays.sort(arr,(o1,o2)->(o2-o1));//提示报错

报错有两个原因:

  1. 自己在写匿名内部类直接用lambda省略很多,没有加以考虑

  1. 由于Arrays.sort()仅支持对引用数据类型进行自定义排序,所以针对于int类型数组,是不可以用的,那我们只有在定义时候选择定义成Integer,或者将其转换为Integer。

什么是lambda表达式


lambda表达式本质上是一个匿名方法。让我们来看下面这个例子:

public int add(int x, int y) {

return x + y;

}

转成lambda表达式后是这个样子:

(int x, int y) -> x + y;

参数类型也可以省略,Java编译器会根据上下文推断出来:

(x, y) -> x + y; //返回两数之和

或者

(x, y) -> { return x + y; } //显式指明返回值

可见lambda表达式由三部分组成:参数列表,箭头(->),以及一个表达式或语句块。

Lambda语法注意点:

  1. 参数类型可以省略

  1. 假如只有一个参数,()括号可以省略

  1. 如果方法体只有一条语句,{}大括号可以省略

  1. 如果方法体中唯一的语句是return返回语句,那省略大括号的同事return也要省略

问题:

在这我问大家一个问题,如果现在有两个参数,而且两个参数的类型不同,那么使用lambda表达式可以省略参数吗?

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值