Arrays.sort(arr, ((o1, o2) -> ));
时间: 2023-12-17 07:03:47 浏览: 57
这段代码中的 lambda 表达式没有给出比较的具体实现,需要在箭头符号后面补充比较逻辑。比如,如果要按照元素大小升序排序,可以这样写:
Arrays.sort(arr, ((o1, o2) -> o1 - o2));
如果要按照元素大小降序排序,可以这样写:
Arrays.sort(arr, ((o1, o2) -> o2 - o1));
相关问题
java: 对于sort(int[],(o1,o2)->o2 - o1), 找不到合适的方法 方法 java.util.Arrays.<T>sort(T[],java.util.Comparator<? super T>)不适用 (推论变量 T 具有不兼容的限制范围 等式约束条件: int 上限: java.lang.Object) 方法 java.util.Arrays.<T>sort(T[],int,int,java.util.Comparator<? super T>)不适用 (无法推断类型变量 T (实际参数列表和形式参数列表长度不同))
这个错误提示表明使用lambda表达式时,编译器无法推断出泛型类型参数T的具体类型,需要显式指定泛型类型参数,示例代码如下:
```
int[] arr = {5, 2, 8, 1, 9};
Arrays.sort(arr, (Integer o1, Integer o2) -> o2 - o1);
System.out.println(Arrays.toString(arr)); // 输出 [9, 8, 5, 2, 1]
```
以上代码中,显式指定了泛型类型参数为Integer,即`(Integer o1, Integer o2) -> o2 - o1`,表示o2大于o1时返回正数,o2等于o1时返回0,o2小于o1时返回负数,实现降序排列。
java中的arrays.sort降序
在Java中,Arrays.sort()函数默认是升序排序。如果你想要实现降序排序,你可以重载比较器,自定义比较规则。你可以使用Arrays.sort()函数的重载版本,并传入一个Comparator对象作为参数。这个Comparator对象将定义你自己的比较规则。在比较器的compare()方法中,你可以通过返回o2 - o1来实现降序排序。以下是一个示例代码:
```java
import java.util.Arrays;
import java.util.Comparator;
public class HelloWorld {
public static void main(String[] args) {
Integer[] arr = {1, 4, 3, 6, 7, 9};
Arrays.sort(arr, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(Arrays.toString(arr));
}
}
```
在这个示例中,我们使用了Arrays.sort()函数的重载版本,并传入了一个匿名的Comparator对象。在这个匿名的Comparator对象中,我们重写了compare()方法,通过返回o2 - o1来实现降序排序。最后,我们打印排序后的数组。