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);
    }
}

  

原文地址:https://www.cnblogs.com/smartsmile/p/11616224.html

时间: 2024-10-11 03:36:35

Java 中List集合中自定义排序的相关文章

java范型集合中的成员排序

范型集合中的类是JsonObject,不是自定义类,如果是自定义类就直接取要比较的字段值. 1 ArrayList<JSONObject> TList = new ArrayList<JSONObject>(); 2 3 for(int i=0;i<10000;i++) 4 { 5 JSONObject object=new JSONObject(); 6 Random rand = new Random(); 7 int randNum = rand.nextInt(200

.NET/C#中对自定义对象集合进行自定义排序的方法

一个集合可否排序,要看系统知不知道排序的规则,像内建的系统类型,int ,string,short,decimal这些,系统知道怎么排序,而如果一个集合里面放置的是自定义类型,比如自己定义了一个Car类型,要把它排序,系统是不知道怎么办的. 那么,如何告知系统排序的规则呢?有以下几种方法: 1:对类实现IComparable接口,示例如下: [csharp] view plain copy print? using System; using System.Collections.Generic

Java 去除 ArrayList 集合中的重复元素

// One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 ArrayList 集合中的重复元素 public class ArrayListTest { public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) {

Java中List集合中subList的坑

参考博主http://blog.csdn.net/xuweilinjijis/article/details/9037635 先看List接口subList方法的javadoc The returned list is backed by this list, so non-structural* changes in the returned list are reflected in this list, and vice-versa.* The returned list supports

java之判断集合中的元素是否重复

第1章 判断集合元素唯一的原理 1.1 ArrayList的contains方法判断元素是否重复原理 ArrayList的contains方法会使用调用方法时,传入的元素调用equals方法依次与集合中的旧元素所比较,从而根据返回的布尔值判断是否有重复元素.此时,当ArrayList存放自定义类型时,由于自定义类型在未重写equals方法前,判断是否重复的依据是地址值,所以如果想根据内容判断是否为重复元素,需要重写元素的equals方法. 1.2 HashSet的add/contains等方法判

使用Java中Comparator接口实现自定义排序

一般情况下,自己动手写一个简单排序程序还是没有问题的,但是你能保证写出来的排序程序的时间复杂度吗?你能保证程序的正确性吗,鲁棒性呢,还有程序结构的清晰性,可维护性.......综上所述,学习一下排序接口来实现对复杂对象的排序还是很有必要的.Java中有两个用来实现排序的接口Comparator和Comparable接口,本人比较喜欢使用java的Comparator接口,在程序里实现Comparator接口里的compare(Object o1,Object o2)方法,然后在程序中通过调用Ar

MongoDB中关于查询条件中包括集合中字段的查询

要查询的数据结构例如以下: 以查询当中的versionLimitList字段为例 MongoOperations工具类查询相关语句 <pre name="code" class="java">Criteria criteria1 = Criteria.where("validStartTime").gt(new Date()). and("versionLimitList").elemMatch (Criteria

MongoDB中关于查询条件中包含集合中字段的查询

要查询的数据结构如下: 以查询其中的versionLimitList字段为例 MongoOperations工具类查询相关语句 <pre name="code" class="java">Criteria criteria1 = Criteria.where("validStartTime").gt(new Date()). and("versionLimitList").elemMatch (Criteria.w

Java中的集合Collections(六)

操作集合的工具类Collections Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集合对象设置为不可变.对集合对象实现同步控制等方法. 排序操作 Collections提供了如下几个方法对List集合元素进行排序: static void reverse(List list);       //反转指定List集合元素的顺序. static void shuffle(List li