Java基础集锦——利用Collections.sort方法对list排序

  要想对List进行排序,可以让实体对象实现Comparable接口,重写compareTo方法即可实现按某一属性排序,但是这种写法很单一,只能按照固定的一个属性排序,没变法变化。通过下面这种方法,可以动态的指定List按照某一个属性进行排序,例子很简单,看代码就明白了。

  

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class testCollection {

    /**
     * @param args
     */
    public static void main(String[] args) {
        User u1=new User();
        u1.setName("Jessica");
        u1.setAge(20);
        User u2=new User();
        u2.setName("Abobo");
        u2.setAge(30);
        List<User> userList=new ArrayList<User>();
        userList.add(u1);
        userList.add(u2);
        MyComparator sort=new MyComparator();
        MyComparator2 sort2=new MyComparator2();
        MyComparator3 sort3=new MyComparator3();
        MyComparator4 sort4=new MyComparator4();
        Collections.sort(userList,sort);
        for (User u:userList) {
            System.out.println(u.toString()+";I am "+(userList.indexOf(u)+1)+" and I‘m ordered by Name desc");
        }
        Collections.sort(userList,sort2);
        for (User u:userList) {
            System.out.println(u.toString()+";I am "+(userList.indexOf(u)+1)+" and I‘m ordered by Name asc");
        }
        Collections.sort(userList,sort3);
        for (User u:userList) {
            System.out.println(u.toString()+";I am "+(userList.indexOf(u)+1)+" and I‘m ordered by Age desc");
        }
        Collections.sort(userList,sort4);
        for (User u:userList) {
            System.out.println(u.toString()+";I am "+(userList.indexOf(u)+1)+" and I‘m ordered by Age asc");
        }

    }
    public static class MyComparator implements Comparator<User>{
        @Override
        public int compare(User o1, User o2) {
            return -o1.getName().compareTo(o2.getName());
        }
    }
    public static class MyComparator2 implements Comparator<User>{
        @Override
        public int compare(User o1, User o2) {
            return o1.getName().compareTo(o2.getName());
        }
    }
    public static class MyComparator3 implements Comparator<User>{
        @Override
        public int compare(User o1, User o2) {
            return -o1.getAge().compareTo(o2.getAge());
        }
    }
    public static class MyComparator4 implements Comparator<User>{
        @Override
        public int compare(User o1, User o2) {
            return o1.getAge().compareTo(o2.getAge());
        }
    }
}

结果:

Hello!My Name is Jessica and I‘m 20;I am 1 and I‘m ordered by Name desc
Hello!My Name is Abobo and I‘m 30;I am 2 and I‘m ordered by Name desc
Hello!My Name is Abobo and I‘m 30;I am 1 and I‘m ordered by Name asc
Hello!My Name is Jessica and I‘m 20;I am 2 and I‘m ordered by Name asc
Hello!My Name is Abobo and I‘m 30;I am 1 and I‘m ordered by Age desc
Hello!My Name is Jessica and I‘m 20;I am 2 and I‘m ordered by Age desc
Hello!My Name is Jessica and I‘m 20;I am 1 and I‘m ordered by Age asc
Hello!My Name is Abobo and I‘m 30;I am 2 and I‘m ordered by Age asc

  通过这种方法,可以选择为List排序的方式了,打好地基,才能逐渐稳固的长城。

时间: 2024-12-28 23:01:15

Java基础集锦——利用Collections.sort方法对list排序的相关文章

Java语言利用Collections.sort对Map,List排序

1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 package com.tao.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Li

Collections.sort方法对list排序的两种方式

Collections.sort( )分为两部分,一部分为排序规则,一部分为排序算法 . 规则用来判断对象,算法则考虑如何进行排序 对于自定义对象,sort()不知道规则,所以无法比较,这种情况下一定要定义排序规则.方式有两种: 第一种,java.lang下面的一个接口:Comparable.可以让自定义对象实现一个Comparable接口,这个接口只有一个方法comparableTo(Object o) 其规则是当前对象与o对象进行比较,返回一个int值,系统根据此值进行排序. 如当前对象>o

定制对ArrayList的sort方法的自定义排序

java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数 示例: // 外部类的方式 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.uti

Java Collections.sort方法对list集合排序

1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class UserSort { public static void main(String[] args) { List<User> userList =new ArrayList<User&g

java.util.ComparableTimSort中的sort()方法简单分析

TimSort算法是一种起源于归并排序和插入排序的混合排序算法,设计初衷是为了在真实世界中的各种数据中能够有较好的性能. 该算法最初是由Tim Peters于2002年在Python语言中提出的. TimSort 是一个归并排序做了大量优化的版本号. 对归并排序排在已经反向排好序的输入时表现O(n2)的特点做了特别优化.对已经正向排好序的输入降低回溯.对两种情况混合(一会升序.一会降序)的输入处理比較好. 在jdk1.7之后.Arrays类中的sort方法有一个分支推断,当LegacyMerge

Java基础学习第五天——方法与数组

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.24 lutianfei none 第三章Java基础语法 方法 方法就是完成特定功能的代码块,即函数. 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2-) { 函数体; return 返回值; } 详细解释: 修饰符,目前就用public static,后详解. 返回值类型:就是功能结果的数据类型. 方法名:符合命名规则即可,方便我们的调用. 参数: 实际参数:就是实际参与运算的.

Java基础Map接口+Collections

1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Map集合的添加 */ Map<String, String> map = new HashMap<String, String>(); map.put("星期一", "Monday"); map.put("星期六", "

jdk1.7和jdk1.6的Collections.sort方法不一样

Java代码 Collections.sort(list, new Comparator<AAAVo>() { @Override public int compare(AAAVo vo1, AAA vo2) { if(vo1==null||vo2==null){ return 0; } if(Integer.valueOf(vo1.getCouponValue())<Integer.valueOf(vo2.getCouponValue())){ if(vo1.getConsumeTim

javascript 数组排序sort方法和自我实现排序方法的学习小结 by FungLeo

前言 针对一个数组进行排序,一个很常见的需求.尤其在后端.当然,前端也是有这个需求的. 当然,数组排序,是有现成的方法的.就是sort()方法. 我们先开看下这个. 标准答案,sort方法 var arr = [45,98,67,57,85,6,58,83,48,18]; console.log('原数组'); console.log(arr); console.log('sort方法从小到大排序'); console.log(arr.sort(function(a,b){return a-b}