链表-如何在java中根据元素的一个字段的值对linkedlist进行排序



我在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进行排序。

有关更多信息,请阅读本教程

相关内容

  • 没有找到相关文章

最新更新