Java中list集合排序,

本文详细介绍如何使用Java对List集合进行排序,包括基本类型如Integer、String的直接排序,以及自定义对象类型的排序方法。对于自定义对象,文章提供了两种排序方式:通过实现Comparable接口并重写compareTo方法,以及使用Comparator接口进行更为灵活的排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、List集合排序方法

使用以下方法必须实现Comparable接口

List<Integer>、List<String>可以直接使用,因为内部实现了接口Comparable

// 顺序排序 12345
Collections.sort(list);
// 逆序排序 54321
Collections.reverse(list);
// 乱序排序 51324
Collections.shuffle(list);

2、List集合对象(多字段)排序

2.1 对象实现接口Comparable 重写compareTo方法

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import lombok.Data;

@Data
public class Book implements Comparable<Book> {
    private Long id;
    private String name;
    private Double price;

    public Book(Long id, String name, Double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    @Override
    public int compareTo(Book o) {
        // 调用Collections.sort时为正序,要逆序将o.getPrice放前面 或 调用Collections.reverse
        return this.getPrice().compareTo(o.getPrice());
    }

    public static void main(String[] args) {
        List<Book> bookList = new ArrayList<>();
        bookList.add(new Book(1L, "书本1", 1.1));
        bookList.add(new Book(4L, "书本4", 4.4));
        bookList.add(new Book(2L, "书本2", 2.2));
        bookList.add(new Book(3L, "书本3", 3.3));

        // 根据price正序排序 结果 1.1 2.2 3.3 4.4
        Collections.sort(bookList);
    }
    
}

2.2 对象不实现Comparable接口(推荐)

        // 根据price正序排序 结果 1.1 2.2 3.3 4.4
        bookList.sort(new Comparator<Book>() {
            @Override
            public int compare(Book o1, Book o2) {
                // 要逆序将o2.getPrice放前面
                return o1.getPrice().compareTo(o2.getPrice());
            }
        });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值