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

需求: 需要对List中的每个User按照birthday顺序排序,时间由小到大排列。
出处:hunter_Cecil https://www.cnblogs.com/hunterCecil/p/5556174.html

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("********排序前*******");
       for(UserBean user: list){
        System.out.println(user.getBirthday());  
       }

        ListSort(list);
        System.out.println("******排序后*****");
       for(UserBean user: list){
        System.out.println(user.getBirthday());
       }
    }

    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());
                    Date dt2 = format.parse(o2.getBirthday());
                    if (dt1.getTime() > dt2.getTime()) {
                        return 1;
                    } else if (dt1.getTime() < dt2.getTime()) {
                        return -1;
                    } else {
                        return 0;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果你想对一个 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 对象的信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值