如何对List类型列表进行排序?

时间:2015-01-30 09:24:27

标签: java

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>>

4 个答案:

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