1. 程式人生 > >List集合使用Comparator 排序優先順序

List集合使用Comparator 排序優先順序

Comparator 對物件排序的優先順序的定義:

返回的數字越大排名越靠前

eg:一個物件有三個屬性,年齡,工資,銷售量

如果設定一個排序規則,

優先排序規則:
年齡從小到大、
工資從大到小
銷量從高到底

該怎麼排

下面插入程式碼,先定義一個類

class User
{
    private int age;
    
    private int salary;
    
    private int sales;
    
    public int getAge()
    {
        return age;
    }
    
    public void setAge(int age)
    {
        this.age = age;
    }
    
    public int getSalary()
    {
        return salary;
    }
    
    public void setSalary(int salary)
    {
        this.salary = salary;
    }
    
    public int getSales()
    {
        return sales;
    }
    
    public void setSales(int sales)
    {
        this.sales = sales;
    }
    
    public User(int age,int salary,int sales)
    {
        super();
        this.age = age;
        this.salary = salary;
        this.sales = sales;
    }
    
    @Override
    public String toString()
    {
        return "User [age=" + age + ", salary=" + salary + ", sales=" + sales + "]";
    }
    
}

寫一個測試類:

public class ComparatorTest
{
    public static void main(String[] args)
    {
        User u1 = new User(11, 22, 33);
        User u2 = new User(11, 22, 34);
        User u3 = new User(11, 22, 35);
        User u4 = new User(21, 22, 33);
        User u5 = new User(31, 22, 33);
        User u6 = new User(41, 22, 33);
        User u7 = new User(51, 220, 33);
        User u8 = new User(51, 222, 33);
        User u9 = new User(51, 226, 77);
        User u10 = new User(51, 226, 33);
        User u11 = new User(11, 22, 33);
        
        List<User> ulist = new ArrayList<User>();
        ulist.add(u11);
        ulist.add(u10);
        ulist.add(u9);
        ulist.add(u8);
        ulist.add(u7);
        ulist.add(u6);
        ulist.add(u5);
        ulist.add(u4);
        ulist.add(u3);
        ulist.add(u2);
        ulist.add(u1);
        Collections.sort(ulist, comparator);//呼叫Comparator
        for (User user : ulist)
        {
            System.out.println(user);
        }
    }
    
    public static Comparator<User> comparator = new Comparator<User>()
    {
        
        @Override
        public int compare(User o1, User o2)
        {
            // 優先排序規則:
            // 年齡從小到大、
            // 工資從大到小
            // 銷量從高到底
            int a = o1.getAge() - o2.getAge();
            if (a != 0)
            {
                return a > 0 ? 3 : -1;//
            }
            else
            {
                a = o2.getSalary() - o1.getSalary();
                if (a != 0)
                {
                    return a > 0 ? 2 : -2;
                }
                else
                {
                    return o2.getSales() - o1.getSales() > 0 ? 1 : -3;
                }
            }
        }
    };
}
}

輸出結果:

User [age=11, salary=22, sales=35]
User [age=11, salary=22, sales=34]
User [age=11, salary=22, sales=33]
User [age=11, salary=22, sales=33]
User [age=21, salary=22, sales=33]
User [age=31, salary=22, sales=33]
User [age=41, salary=22, sales=33]
User [age=51, salary=226, sales=77]
User [age=51, salary=226, sales=33]
User [age
=51, salary=222, sales=33] User [age=51, salary=220, sales=33]

轉載:https://www.cnblogs.com/dayu007/p/7692348.html

相關推薦

List集合使用Comparator 排序優先順序

Comparator 對物件排序的優先順序的定義:返回的數字越大排名越靠前eg:一個物件有三個屬性,年齡,工資,銷售量如果設定一個排序規則,優先排序規則:年齡從小到大、工資從大到小銷量從高到底該怎麼排下面插入程式碼,先定義一個類class User { private

List集合進行排序

ons etag span bsp -s str int tor vat 一、說明 使用Collections工具類的sort方法對list進行排序 新建比較器Comparator 二、代碼 排序: import java.util.ArrayList; import

List集合排序

List集合的排序 1.對基本型別的包裝型別進行排序 @Test public void test01() { List<Integer> list = new ArrayList<>(); list.add(3); list.add(2);

List集合序列排序的兩種方法

首先講一下Comparable介面和Comparator介面,以及他們之間的差異。有助於Collections.sort()方法的使用。請參考 1.Comparable自然規則排序//在自定義類Student裡面實現Comparable介面,並重寫抽象方法compareTo(Student o);//Col

合併兩個list集合並且排序

集合合成的話List<Article> list1 = new ArrayList<Article>();  /*.....新增資料.......*/List<Articl

List集合根據Map裡某個key對List集合重新排序介紹

例1:List集合資料參考形式如下: [{GLXXLX=03,GLXXBH=20160226105812003},{GLXXLX=01,GLXXBH=20160226105812001},{GLXXLX=02,GLXXBH=20160226105812002}

Android中list集合排序方法

Collections對List集合中的資料進行排序 有時候需要對集合中的元素按照一定的規則進行排序,這就需要用到 Java中提供的對集合進行操作的工具類Collections,其中的sort方法 先看一個簡單的例子: [java] view plain copy print?publicstati

Java中對list集合進行排序

原文連結 /** * 根據order對User排序 */ public class User { //此處無需實現Comparable介面 private String name; private Integer order; public Str

淺談在java中list集合排序問題

定義實體類: public class Person { private Integer id; private String name; private Integer age; public Integer get

【轉載】C#中使用OrderBy和ThenBy等方法對List集合進行排序

derby 轉載 排序。 sha esc ews 個人 類的定義 orderby 在C#的List操作中,針對List對象集合的排序我們可以使用OrderBy、OrderByDescending、ThenBy、ThenByDescending等方法按照特定的對象屬性進行排序

java list集合使用Collections中的sort方法進行排序Comparator),超實用

在java中有沒有遇到對list集合進行排序,其實很簡單的,需要集合類Collections中sort方法 public static <T> void sort(List<T&g

含有對象的List集合實現字母數字混合排序

gets 以及 實現 基本 ride man substring new 混合 List<PageData> varList = [{BOMCode=10A, mantotal=4}, {BOMCode=10B, mantotal=1}, {BOMCo

list集合如何對裏面的元素進行排序

匿名 src .cn .so com image turn cnblogs 公共類 Collections 是集合的公共類,提供各種工具,其中提供了排序方法。 Collections.sort(),方法兩個參數,1,要排序的集合,2.排序方式 下面是匿名內部類,實現了排序借

Java中List集合排序的方法 比較器的使用 根據學生對象數序 語文 英語成績總和進行sort排序

private system.in set swift ringbuf 直觀 turn @override encoding package com.swift; import java.util.ArrayList; import java.util.Collecti

根據List集合中的對象屬性排序

his return nts 類型 sin 屬性 ppr 圖片 compareto 首先創建一個Student對象,裏面有三個屬性,分別是int類型,String類型,Date類型 package com.sinoway.cisp.test; import java.t

List集合元素的計算、排序、查找、統計

List集合 元素 計算、排序、查找、統計 引入:針對List元素的計算、排序、查找、統計。1)計算(max,min,sum)示例1:list01=[45, 90, 123, 987, -18, 78, 96]print("list01的最小值:",min(list01))pr

通過Java排序List集合的元素的幾種方法

諸葛 rtt program pac tco getc lis asi new 用Java工具類Collections的sort()方法,對List集合元素進行排序。 Collections提供兩種排序方法: 一、Collections.sort(List<T>

2018.9.26 如何對List集合中的元素進行排序

lec str 有時 etag gets sets ava int private Collections對List集合中的數據進行排序 有時候需要對集合中的元素按照一定的規則進行排序,這就需要用到 Java中提供的對集合進行操作的工具類Collections,其中的sor

java List Collections 根據時間對List集合內的元素排序

按時間正序排序。 核心程式碼 List<Folderfile> folderfiles = new ArrayList<>(); ...往集合裡新增元素此處省略..... Collections.sort(folderfiles, new Comparator

List集合排序的實現

list集合排序的實現 根據物件屬性進行排序 簡單說明一下:對list集合中的User進行排序,根據其姓名和年齡進行排序。直接看程式碼,User類我就不寫了 public class ListSort { public static void main(String[] a