Java 中List集合中自定义排序

Posted smartsmile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 中List集合中自定义排序相关的知识,希望对你有一定的参考价值。

/*
集合框架的工具类。
Collections:集合框架的工具类。里面定义的都是静态方法。

Collections和Collection有什么区别?
Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
		它有两个常用的子接口,
		List:对元素都有定义索引。有序的。可以重复元素。
		Set:不可以重复元素。无序。

Collections是集合框架中的一个工具类。该类中的方法都是静态的
		提供的方法中有可以对list集合进行排序,二分查找等方法。
		通常常用的集合都是线程不安全的。因为要提高效率。
		如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
*/

import java.util.*;

class Test3 
    public static void main(String[] args) 
        System.out.println("-------------sortDemo---------------");
        sortDemo();
        System.out.println("-------------maxDemo---------------");
        maxDemo();
        /**
         * -------------sortDemo---------------
         * [z, qq, zz, aaa, abcd, kkkkk]
         * -------------maxDemo---------------
         * [aaa, abcd, kkkkk, qq, z, zz]
         * max=zz
         */
    

    public static void sortDemo() 
        List<String> list = new ArrayList<String>();
        list.add("abcd");
        list.add("aaa");
        list.add("zz");
        list.add("kkkkk");
        list.add("qq");
        list.add("z");
        Collections.sort(list, new StrLenComparator());
        sop(list);
    

    public static void maxDemo() 
        List<String> list = new ArrayList<String>();

        list.add("abcd");
        list.add("aaa");
        list.add("zz");
        list.add("kkkkk");
        list.add("qq");
        list.add("z");
        Collections.sort(list);
        sop(list);
        String max = Collections.max(list);
        sop("max=" + max);
    

    public static void sop(Object obj) 
        System.out.println(obj);
    



/**
 * 比较器,先按字符长度然后按自然排序
 */
class StrLenComparator implements Comparator<String> 
    public int compare(String s1, String s2) 
        if (s1.length() > s2.length())
            return 1;
        if (s1.length() < s2.length())
            return -1;
        return s1.compareTo(s2);
    

  

以上是关于Java 中List集合中自定义排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中自定义排序列表

java 怎样判断一个list里是不是有一个对象(object)?

关于自定义 List集合排序的方法!

java中集合中自定义对象向下转型问题

flask中自定义过滤器

使用 LINQ 在 OrderBy 中自定义排序逻辑