class UnfairContainer<T> implements Comparable<UnfairContainer>
{
private ArrayList<T> array = new ArrayList<T>();
public void sort()
{
Collections.sort(array);
}
public int compareTo(UnfairContainer o)
{
}
}
所以我的类实现了可比性,但是当我尝试创建调用Collections.sort()的sort方法时,它给出了一个错误,表示我无法使用ArrayList调用集合排序。有人可以帮忙吗?并帮助我使用compareTo方法,我坚持认为我想比较我的ArrayList中的每个元素
答案 0 :(得分:1)
问题是列表不能保证可以排序。这是因为对于您当前的设置,T
可能是任何内容 - 包括未实现Comparable
的类,因此无法按Collections
排序。 Collections.sort()
的类型签名反映了这一点:
public static <T extends Comparable<? super T>> void sort(List<T> list);
要解决此问题,您需要在T上加上一个上限以确保它是可排序的:
class UnfairContainer<T extends Comparable<T> >
implements Comparable<UnfairContainer<T> >
{
...
T extends Comparable<T>
表示T必须是实现Comparable的类。这让Collections知道可以对ArrayList进行排序,一切正常。