通过Lambda表达式传递函数
时间: 2023-07-08 19:38:31 浏览: 111
Java面向对象系列[Lambda]
(接上文)
```
void sort(T[] arr, Comparator<T> comparator) {
// 排序逻辑
}
}
public class Main {
public static void main(String[] args) {
Sorter sorter = new Sorter();
Integer[] arr = { 3, 1, 4, 1, 5, 9, 2, 6 };
sorter.sort(arr, (a, b) -> a - b);
System.out.println(Arrays.toString(arr)); // 输出 [1, 1, 2, 3, 4, 5, 6, 9]
}
}
```
在上面的例子中,我们使用Lambda表达式`(a, b) -> a - b`来传递一个比较函数。这个函数接受两个参数a和b,返回a-b的值,表示a小于等于b。然后,我们将Lambda表达式作为参数传递给sort方法,让它来进行排序。
要注意的是,Lambda表达式只能传递给函数式接口,即只有一个抽象方法的接口。在上面的例子中,Comparator是一个函数式接口,它只有一个抽象方法compare。因此,我们可以使用Lambda表达式来传递一个比较函数。
总之,虽然Java中不能直接传递函数,但我们可以通过接口或Lambda表达式来传递函数,从而实现类似于函数传递的效果。
阅读全文