拉姆达表达式由三部分构成
()代表参数
->
{}可省略,主体可以是表达式和语句,如果是表达式需要去return,但是语句只需要执行即可
![](https://img.haomeiwen.com/i12913154/3777d7f43fd9aae1.png)
![](https://img.haomeiwen.com/i12913154/808c370c2baf73b4.png)
匿名内部类的意思就是这个类没有名字,只有new xxx,如下,可以在匿名内部类写方法
![](https://img.haomeiwen.com/i12913154/07c9030734a28b4f.png)
外部比较器,去实现Comparator接口,利用匿名内部类,来实现比较,其中写<int []>来代表参数,然后在匿名类内部去实现或重写compare方法,下面是实现比较二维数组的第一维元素的实现,compare(int [] a,int [] b)该方法的参数,int [] a代表取该二维数组的一行,然后return a[0]-b[0];,如果a[0]-b[0]>0就返回1,代表顺序
Arrays.sort(intervals, new Comparator<int []>(){//<int []>代表参数,这就叫匿名内部类
public int compare(int [] a,int [] b){
return a[0]-b[0];//顺序
}
看看这个例子:
![](https://img.haomeiwen.com/i12913154/5346909c1d0a3f98.png)
![](https://img.haomeiwen.com/i12913154/35f01cee75d32290.png)
也可以利用拉姆达表达式来实现,含义和之前的一样
Arrays.sort(intervals, (int [] a,int [] b)->a[0]-b[0]
内部比较器:
需要来实现Comparable接口,在类内部去实现compareTo()方法,具体的实现和compare方法类似,去调用java.util.Arrays.sort()方法,不用像Comparator去指定容器,这个默认使用内部比较器
![](https://img.haomeiwen.com/i12913154/fbc1de017ab68a41.png)
网友评论