我正在尝试根据Class A的int r对B类中名为BinOrder的A类列表进行排序。
但是我收到了Collections.sort(BinOrder);
这一行的错误The method sort(List<T>) in the type Collections is not applicable for the arguments (ArrayList<A>)
A类:
public class A{
int s;
int r;
public A(int si, int ri) {
s=si;
r= ri;
}
}
B组:
import java.util.ArrayList;
import java.util.Collections;
public class B implements Comparable<A> {
public Iterator<A> randomMethodName(int a) {
ArrayList<A> BinOrder = new ArrayList<A>();
A a = new A(1,3)
A a2 = new A(1,4)
BinOrder.add(a);
BinOrder.add(a2);
}
// sort array in increasing order of r
Collections.sort(BinOrder);
return BinOrder;
}
@Override
public int compareTo(A list) {
return null;
}
}
答案 0 :(得分:8)
为了能够ArrayList
A
A
使用Collection.sort()
的单参数版本,Comparable
应该实现public class A implements Comparable<A> {
...
@Override
int compareTo(A rhs) {
...
}
}
接口:
{{1}}
答案 1 :(得分:0)
这是Collections.sort的签名:
public static <T extends Comparable<? super T>> void sort(List<T> list)
A
必须为此方法实现Comparable。
当BinOrder
类型为BinOrder
时,您尝试将ArrayList<A>
传递给此方法,但由于A
未实现Comparable<A>
,因此它不会t符合方法的签名。
更改A
以实现Comparable,或使用接受比较器的sort
方法:
public static <T> void sort(List<T> list, Comparator<? super T> c)