public class Test { public static void main(String[] args) { Integer[] arr = {2, 4, 6, 1, 9, 3, 0, 7}; Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer i1, Integer i2) { return i2.compareTo(i1); } }); System.out.println(Arrays.toString(arr)); } }请使用Lambda表达式,改写以上代码,实现相同的需求。
时间: 2024-02-02 13:04:18 浏览: 76
可以使用 Lambda 表达式来简化上述代码。Lambda 表达式是一个匿名函数,可以直接传递给方法或赋值给变量。这里可以使用 Lambda 表达式来替代匿名内部类,代码如下:
```
public class Test {
public static void main(String[] args) {
Integer[] arr = {2, 4, 6, 1, 9, 3, 0, 7};
Arrays.sort(arr, (i1, i2) -> i2.compareTo(i1));
System.out.println(Arrays.toString(arr));
}
}
```
Lambda 表达式 `(i1, i2) -> i2.compareTo(i1)` 的意思与匿名内部类中的 `compare` 方法相同。其中的 `->` 符号表示 Lambda 表达式的参数和执行体的分隔符,左侧是参数列表,右侧是执行体。因为只有一行代码,所以不需要写花括号。
相关问题
public class Test { public static void main(String[] args) { Integer[] arr = {2, 4, 6, 1, 9, 3, 0, 7}; Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer i1, Integer i2) { return i2.compareTo(i1); } }); System.out.println(Arrays.toString(arr)); } }
这段代码实现了对一个 Integer 类型的数组进行降序排序,并使用了匿名内部类实现了 Comparator 接口中的 compare 方法。具体来说,compare 方法会比较两个 Integer 对象 i1 和 i2 的大小,如果 i2 大于 i1,则返回正数,如果 i2 等于 i1,则返回 0,如果 i2 小于 i1,则返回负数。在 sort 方法中,根据 compare 方法的返回值将数组中的元素进行排序。最终输出排序后的数组。
举一反三 请观察如下代码,其实现的效果是将数组中的元素按照从大到小的顺序排序: public class Test { public static void main(String[] args) { Integer[] arr = {2, 4, 6, 1, 9, 3, 0, 7}; Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer i1, Integer i2) { return i2.compareTo(i1); } }); System.out.println(Arrays.toString(arr)); } } 请使用Lambda表达式,改写以上代码,实现相同的需求。
可以使用Lambda表达式来简化以上代码的实现。根据给出的代码,可以将其改写为:
public class Test {
public static void main(String[] args) {
Integer[] arr = {2, 4, 6, 1, 9, 3, 0, 7};
Arrays.sort(arr, (i1, i2) -> i2.compareTo(i1));
System.out.println(Arrays.toString(arr));
}
}
通过使用Lambda表达式,我们可以将匿名内部类的实现直接用箭头符号"->"表示。在这个例子中,比较方法的逻辑仍然是i2.compareTo(i1),只是将其放在箭头符号后面作为Lambda表达式的函数体。这样就实现了相同的需求,将数组中的元素按照从大到小的顺序进行排序。
阅读全文