我在java程序中使用了一个linkedlist,元素是一个自定义类型,它有三个字段,其中一个是Integer类型。我的问题是:如何根据Integer字段的值对链表进行排序?
您可以将Collections.sort方法与自定义Comparator一起使用。
Collections.sort(your_list, new Comparator<YoureValueType>(){
@Override
public int compare(YoureValueType o1, YoureValueType o2){
if(o1.getMagicInt() < o2.getMagicInt()){
return -1;
}
if(o1.getMagicInt() > o2.getMagicInt()){
return 1;
}
return 0;
}
});
编辑:我刚刚看到Alexandr在waldheinz的回答中评论了非常大和非常小的值。我更新了代码以反映他的论点。
您可以使用Comparator,它知道如何对对象进行排序,如下所示:
public class Foo {
public String ignoreMe;
public int sortOnMe;
public Object ignoreMeToo;
public static void main() {
final List<Foo> unsorted = new LinkedList<Foo>();
// add elements...
Collections.sort(unsorted, new Comparator<Foo>() {
@Override
public int compare(Foo o1, Foo o2) {
return o1.sortOnMe < o2.sortOnMe ? -1 : o1.sortOnMe == o2.sortOnMe ? 0 : 1;
}
});
}
}
您可以使用自定义Comparator
另请参见
- 排序点列表-使用-java
只需编写一个实现比较器接口的类。
然后使用Collections.sort(list,comparator)对您的list进行排序。
有关更多信息,请阅读本教程