对List中每个对象元素按时间顺序排序

本文介绍了如何在Java中对包含对象的List集合按时间字段进行排序,通过使用Comparator接口和Collections.sort()方法实现。文章提供了一个简单的用户类排序示例,并解释了compare()和equals()方法的作用。
摘要由CSDN通过智能技术生成

对象排序

工作中遇到一个问题:

    调用别人家的接口查询数据库,可是接口中查询的结果并没有对结果进行时间排序。于是就用了一下方法对查询的结果集根据时间排序。我的项目中类结构复杂,我用简单的用户类来演示排序过程,更是希望能看的懂。

  

import java.text.SimpleDateFormat;
import java.util.*;

public class ListSort {
    public static class UserBean {
        private String id;
        private String birthday;

        public String getId() {
            return id;
        }

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

        public String getBirthday() {
            return birthday;
        }

        public void setBirthday(String birthday) {
            this.birthday = birthday;
        }
    }

    public static void main(String[] args) {
        List<UserBean> list = new ArrayList<UserBean>();
        UserListGenerate(list);
        System.out.println("排序前:"+list);

        ListSort(list);
        System.out.println("排序后:"+list);
    }

    private static void UserListGenerate(List<UserBean> list) {
        UserBean user1 = new UserBean();
        UserBean user2 = new UserBean();
        UserBean user3 = new UserBean();
        user1.setId("zhagnsan");
        user1.setBirthday("1980-11-01");

        user2.setId("lisi");
        user2.setBirthday("1981-12-01");

        user3.setId("wangwu");
        user3.setBirthday("1980-12-01");

        list.add(user1);
        list.add(user2);
        list.add(user3);
    }

    private static void ListSort(List<UserBean> list) {
        Collections.sort(list, new Comparator<UserBean>() {
            @Override
            public int compare(UserBean o1, UserBean o2) {
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    Date dt1 = format.parse(o1.getBirthday());
                  
如果你想对一个 List 集合对象进行排序,可以使用 Collections.sort() 方法。该方法可以根据指定的 Comparator 对象来对集合元素进行排序。Comparator 接口的 compare() 方法可以根据自定义规则来比较两个对象的大小。 以下是一个示例代码,演示如何按照固定的顺序对一个 List 集合对象进行排序: ```java import java.util.*; class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } public String toString() { return name + " - " + age; } } class PersonComparator implements Comparator<Person> { private final List<String> nameOrder; public PersonComparator(List<String> nameOrder) { this.nameOrder = nameOrder; } public int compare(Person p1, Person p2) { int index1 = nameOrder.indexOf(p1.name); int index2 = nameOrder.indexOf(p2.name); return Integer.compare(index1, index2); } } public class Main { public static void main(String[] args) { List<Person> persons = new ArrayList<>(); persons.add(new Person("Tom", 25)); persons.add(new Person("Alice", 30)); persons.add(new Person("Bob", 20)); persons.add(new Person("David", 27)); List<String> nameOrder = Arrays.asList("Alice", "Bob", "Tom", "David"); Comparator<Person> comparator = new PersonComparator(nameOrder); Collections.sort(persons, comparator); for (Person person : persons) { System.out.println(person); } } } ``` 在上面的示例代码,我们定义了一个 Person 类来表示人,其包含姓名和年龄两个属性。我们还定义了一个 PersonComparator 类来实现 Comparator 接口,该类可以根据固定的顺序来比较两个 Person 对象的大小。在 Main 类的 main() 方法,我们创建了一个 List 集合来存储 Person 对象,并使用 Arrays.asList() 方法创建了一个 List 来表示姓名的顺序。然后,我们创建了一个 PersonComparator 对象,并使用 Collections.sort() 方法对 List 集合进行排序。最后,我们遍历排好序的 List 集合,打印出每个 Person 对象的信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野狼e族

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值