随笔 - 1357  文章 - 0  评论 - 1104  阅读 - 1941万

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>();
        userList.add(new User(1,2.2));
        userList.add(new User(2,1.1));
        userList.add(new User(3,4.4));
        userList.add(new User(4,5.5));
        userList.add(new User(5,3.3));
        
        Collections.sort(userList, new Comparator<User>() {
            public int compare(User u1, User u2) {
                return new Double(u1.getSalary()).compareTo(new Double(u2.getSalary())); //升序
                // return new Double(u2.getSalary()).compareTo(new Double(u2.getSalary())); //降序
            }
        });
        
        for(User user : userList){
            System.out.println(user);
        }
    }
}
复制代码

 

2、User对象,存储javabean属性

复制代码
package com.ljq.test;

import java.io.Serializable;

/**
 * 用户
 *
 * @author jqlin
 */
public class User implements Serializable{
    private static final long serialVersionUID = 1L;
    
    private long id; // 主键
    private double salary; // 薪资

    public User() {

    }

    public User(long id, double salary) {
        super();
        this.id = id;
        this.salary = salary;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", salary=" + salary + "]";
    }

}
复制代码

3、多字段排序,基本数字类型要用封装数字类型才可以排序,如:new Double()

复制代码
        Collections.sort(dataList, new Comparator<OrderVO>(){
            public int compare(OrderVO a, OrderVO b) {
                //先按期号降序,如果期号相同按玩法名称降序,如果玩法名称相同按投注时间降序
                int result = b.getCreateTime().compareTo(a.getCreateTime());
                if(result == Zero.INT){
                    return new Integer(a.getSort()).compareTo(new Integer(b.getSort()));
                }else{
                    return result;
                }
            }
        });
复制代码

 

posted on   Ruthless  阅读(11781)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示