Line 6: error: no suitable method found for sort(int[],<anonymous Comparator<Integer>>) Arrays.sort(nums, new Comparator<Integer>() { ^ method Arrays.<T#1>sort(T#1[],Comparator<? super T#1>) is not applicable (inference variable T#1 has incompatible bounds equality constraints: int lower bounds: Integer,Object) method Arrays.<T#2>sort(T#2[],int,int,Comparator<? super T#2>) is not applicable (cannot infer type-variable(s) T#2 (actual and formal argument lists differ in length)) where T#1,T#2 are type-variables: T#1 extends Object declared in method <T#1>sort(T#1[],Comparator<? super T#1>) T#2 extends Object declared in method <T#2>sort(T#2[],int,int,Comparator<? super T#2>)
时间: 2024-02-13 10:02:43 浏览: 403
这个错误的原因是`Arrays.sort`方法的第二个参数的类型不正确。`Arrays.sort`方法的第二个参数类型应该为`Comparator`,但是当前传入的是一个匿名内部类`new Comparator<Integer>() {...}`。这个匿名内部类的类型是`Comparator<Integer>`,而不是`Comparator`,因此编译器会报错。
要解决这个问题,可以将匿名内部类的类型改为`Comparator`,如下所示:
```java
Comparator<Integer> comparator = new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
};
Arrays.sort(nums, comparator);
```
这样就可以使用`Comparator`来指定排序规则了。
相关问题
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1929 “IEnumerable<<anonymous type: string mcProgramName, string mcStartTime, string mcEndTime>>”不包含“Concat”的定义,并且最佳扩展方法重载“Queryable.Concat<<anonymous type: string mcName>>(IQueryable<<anonymous type: string mcName>>, IEnumerable<<anonymous type: string mcName>>)”需要类型为“System.Linq.IQueryable<<anonymous type: string mcName>>”的接收器 MyFirstWindowsService E:\lwj\project\wnidowService\MyFirstWindowsService\Service1.cs 138 活动
根据你提供的错误信息,问题出现在连接的另一个匿名类型集合 `mcelementName` 上。错误提示指出 `IEnumerable<<anonymous type: string mcName>>` 类型没有定义 `Concat` 方法,而最佳的扩展方法重载需要接收器类型为 `System.Linq.IQueryable<<anonymous type: string mcName>>`。
为了解决这个问题,你可以尝试将 `mcelementprogram` 转换为 `IQueryable<<anonymous type: string mcName>>` 类型,然后进行连接操作。请尝试以下代码:
```csharp
var result = mcelementprogram.AsQueryable().Concat(mcelementName);
```
通过这种方式,你应该能够成功连接两个匿名类型集合。如果问题仍然存在,请确保你的代码中已正确引用 `System.Linq` 命名空间,并提供更多的代码细节,以便我能够更好地帮助你解决问题。
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1929 “IQueryable<<anonymous type: string mcProgramName, string mcStartTime, string mcEndTime>>”不包含“Concat”的定义,并且最佳扩展方法重载“ParallelEnumerable.Concat<<anonymous type: string mcName>>(ParallelQuery<<anonymous type: string mcName>>, IEnumerable<<anonymous type: string mcName>>)”需要类型为“System.Linq.ParallelQuery<<anonymous type: string mcName>>”的接收器 MyFirstWindowsService E:\lwj\project\wnidowService\MyFirstWindowsService\Service1.cs 138 活动
根据你提供的错误信息,问题出现在连接的匿名类型集合 `mcelementprogram` 上。错误提示指出 `IQueryable<<anonymous type: string mcProgramName, string mcStartTime, string mcEndTime>>` 类型没有定义 `Concat` 方法,而最佳的扩展方法重载需要接收器类型为 `System.Linq.ParallelQuery<<anonymous type: string mcName>>`。
这个错误提示表明你需要将 `mcelementprogram` 转换为 `ParallelQuery<<anonymous type: string mcName>>` 类型,然后进行连接操作。请尝试以下代码:
```csharp
var result = mcelementprogram.AsParallel().Concat(mcelementName);
```
通过这种方式,你应该能够成功连接两个匿名类型集合。如果问题仍然存在,请确保你的代码中已正确引用 `System.Linq` 和 `System.Linq.Parallel` 命名空间,并提供更多的代码细节,以便我能够更好地帮助你解决问题。
阅读全文