List<List> d=new Arraylist<List>();
如何对列表d
进行排序?如果我使用Collection.sort(d);
,我会收到以下错误:
Bound mismatch: The generic method sort(List<T>) of type Collections is not
applicable for the arguments (List<List>). The inferred type List is not a
valid substitute for the bounded parameter <T extends Comparable<? super T>>
答案 0 :(得分:5)
您有一份清单清单。内部列表无法排序,因为Collections.sort不知道如何操作。如果你想要
,你可以这样做Collections.sort (d, new Comparator(){...});
然后传入的比较器将计算出如何对列表进行排序。
例如比较器可以假设
new Comparator<List>(){
public int compare(List l1,List l2){
//write appropriate checks and comparisons here
return l1.get(0).compareTo(l2.get(0);
}}
我认为你应该考虑一下你想做什么。如果你有一个列表然后每个元素本身就是一个列表你真的想要对它进行排序吗?按什么排序?
答案 1 :(得分:0)
您需要使用实现List
的类型对Comparable
进行参数化。
List
不是Comparable
类型。
回想一下:您使用什么标准来对List
进行排序?
答案 2 :(得分:0)
如果您检查API for the sort Method,请说明:
列表中的所有元素都必须实现Comparable接口。
您需要更改List
以实现Comparable,或者您需要使用自定义Comparator。
答案 3 :(得分:0)
如果您仍然处于可以进行更改的阶段,您可以始终构建自己的list实现,即创建一个实现List
接口和Comparable
接口的类。
然后,您可以定义一个合适的比较器。
public class MyList implements List<Whatever>, Comparable<MyList>
{
@Override
public int compareTo(MyList otherList) { }
// override all the other methods from the List interface
}
然后你可以这样做:
List<MyList> d = new Arraylist<MyList>();
Collections.sort(d);