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 (实际参数列表和形式参数列表长度不同))
时间: 2024-03-22 09:37:34 浏览: 35
这个错误提示表明使用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时返回负数,实现降序排列。
相关问题
,请逐句详细解释这段代码是什么意思 //按照id排序 Comparator<Employee> c = new Comparator<Employee>() { @Override public int compare(Employee o1, Employee o2) { // TODO Auto-generated method stub return o1.getId() - o2.getId(); } }; Comparator<Employee> c1 = (o1,o2) ->o1.getId() - o2.getId(); Collections.sort(empList, (o1,o2) ->o1.getId() - o2.getId()); empList.forEach(s ->{ System.out.println(s); });
这段代码的作用是对一个名为empList的Employee对象列表进行按照ID进行排序。首先定义了一个名为c的比较器对象,重写了compare函数,使其按照Employee对象的ID属性进行比较,然后将这个比较器对象传入Collections类的sort方法中进行排序。而后面的c1对象以及empList.forEach()方法则是使用了Java 8引入的Lambda表达式,将比较器对象的具体实现直接传入sort方法和forEach方法中,达到简化代码的目的。最终结果是将empList中的Employee对象按照ID从小到大进行排序,然后依次输出到控制台。
sorted:排序-转属性排序 int compare(T o1, T o2); 返回: 正数、负数和0的具体代码
好的,下面是一个使用 `Comparator` 接口中的 `compare` 方法进行排序的例子,具体代码如下:
```java
import java.util.Arrays;
import java.util.Comparator;
public class SortExample {
public static void main(String[] args) {
// 初始化一个数组
Integer[] arr = {5, 8, 1, 3, 9, 4};
// 使用 Comparator 接口中的 compare 方法进行排序
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2; // 升序排序
// 或者 return o2 - o1; // 降序排序
}
});
// 输出排序后的结果
System.out.println(Arrays.toString(arr)); // [1, 3, 4, 5, 8, 9]
}
}
```
在这个例子中,我们使用了 `Arrays.sort` 方法对一个 `Integer` 类型的数组进行排序。同时,我们传入了一个 `Comparator` 接口的实现类,实现了 `compare` 方法,来定义元素之间的大小关系。在这个例子中,我们使用了 `o1 - o2` 来确定元素之间的大小关系,从而实现升序排序。如果我们使用 `o2 - o1` 来确定元素之间的大小关系,就可以实现降序排序了。