Collections.sort()错误

时间:2014-12-14 19:14:52

标签: java compareto

我正在尝试根据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;
    }
}

2 个答案:

答案 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)