排序方法如何在包含Foo类型对象的列表上进行排序?

时间:2013-08-25 18:50:28

标签: java sorting collections linked-list

LinkedList的类型如何:

LinkedList<FooClass> list = new LinkedList<FooClass>();

// FooClass extends Comparable

list.add(foo_obj_1);
list.add(foo_obj_2);
list.add(foo_obj_3);
list.add(foo_obj_4);

按照:

排序
Collection.sort(list);

sort方法对包含对象列表的list有什么影响。列表将以什么为基础进行排序?

2 个答案:

答案 0 :(得分:0)

如果您使对象comparable成为对象,则覆盖compareTo方法。然后,您可以根据要比较的字段编写自己的自定义条件。然后可以照常进行排序。

class Author implements Comparable<Author>{
    String firstName;
    String lastName;

    @Override
    public int compareTo(Author other){
        int last = this.lastName.compareTo(other.lastName);
        return last == 0 ? this.firstName.compareTo(other.firstName) : last;
    }
}

如果您的对象未实现Comparable,那么您将无法执行任何各种排序实现。

答案 1 :(得分:0)

查看Collections#sort(List<T>)的API。它只会在T扩展Comparable时编译。

如果Foo未扩展Comparable,则代码将无法编译。 如果是这样,列表将按照Foo的自然顺序排序,如here所述。