根据List集合中的对象属性排序

首先创建一个Student对象,里面有三个属性,分别是int类型,String类型,Date类型

package com.sinoway.cisp.test;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Student {

    private int age;
    private String name;
    private Date birthday;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

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

    @Override
    public String toString() {
        return "Student [age=" + age + ", name=" + name + ", birthday="
                + new SimpleDateFormat("yyyy-MM-dd").format(birthday) + "]";
        // 注意,为了方便看,这里将Date类型的birthday格式化为"yyyy-MM-dd"的String类型
    }

}

1、给int类型的age从小到大排序

package com.sinoway.cisp.test;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import org.junit.Test;

public class ObjectSortTest {

    @SuppressWarnings("all")
    public static void intSort(List<Student> studentList) {
        Collections.sort(studentList, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                Student student1 = (Student) o1;
                Student student2 = (Student) o2;
                if (student1.getAge() > student2.getAge()) {
                    return 1;
                } else if (student1.getAge() == student2.getAge()) {
                    return 0;
                } else {
                    return -1;
                }
            }
        });
    }

    @Test
    public void intSortTest() throws Exception {

        Student student1 = new Student();
        student1.setAge(18);
        student1.setName("C");
        student1.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2018-03-20"));
        Student student2 = new Student();
        student2.setAge(16);
        student2.setName("B");
        student2.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2018-01-20"));
        Student student3 = new Student();
        student3.setAge(20);
        student3.setName("A");
        student3.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2018-02-20"));

        List<Student> studentList = new ArrayList<>();
        studentList.add(student1);
        studentList.add(student2);
        studentList.add(student3);
        for (Student student : studentList) {
            System.out.println(student.toString());
        }
        System.err.println("----------");
        intSort(studentList);
        for (Student student : studentList) {
            System.out.println(student.toString());
        }
    }

}

输出为:

2、给String类型的name排序

@SuppressWarnings("all")
    public static void intSort(List<Student> studentList) {
        Collections.sort(studentList, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                Student student1 = (Student) o1;
                Student student2 = (Student) o2;
                return student1.getName().compareTo(student2.getName());
            }
        });
    }

输出为:

3、给Date类型的birthday排序

@SuppressWarnings("all")
    public static void intSort(List<Student> studentList) {
        Collections.sort(studentList, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                Student student1 = (Student) o1;
                Student student2 = (Student) o2;
                if (student1.getBirthday().getTime() > student2.getBirthday().getTime()) {
                    return 1;
                } else if (student1.getBirthday().getTime() == student2.getBirthday().getTime()) {
                    return 0;
                } else {
                    return -1;
                }
            }
        });
    }

输出为:

原文地址:https://www.cnblogs.com/java-spring/p/8610305.html

时间: 2024-10-12 12:19:39

根据List集合中的对象属性排序的相关文章

对list集合中的对象进行排序(转载)

原文链接:http://blog.csdn.net/veryisjava/article/details/51675036 Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 Java中提供的对集合进行操作的工具类Collections,其中的sort方法 先看一个简单的例子: public static void main(String[] args) { List<Integer> nums = new ArrayList&l

Java:List集合内的对象进行排序

List集合中的对象进行排序,除了for外,还有java的Collections对象来对摸个集合进行排序的用法. 比如说我有一个List集合,集合元素为: public class TaskAutoExecutePlan{ private String id = null; private AutoExecutePlanType autoExecutePlanType; private TaskStatus taskStatus; private String parameters; priva

JS中:json对象数组按对象属性排序

var array = [ {name: 'a', phone: 1}, {name: 'b', phone: 5}, {name: 'd', phone: 3}, {name: 'c', phone: 4} ] array.sort(getSortFun('desc', 'phone')); function getSortFun(order, sortBy) { var ordAlpah = (order == 'asc') ? '>' : '<'; var sortFun = new F

java按照集合中元素的属性进行排序示例代码

public class Student { private String name; private int age; private int id; public Student() {  super(); } public Student(String name, int age, int id) {  super();  this.name = name;  this.age = age;  this.id = id; } public String getName() {  retur

2018.9.26 如何对List集合中的元素进行排序?

Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 Java中提供的对集合进行操作的工具类Collections,其中的sort方法 先看一个简单的例子: [java] view plain copy public static void main(String[] args) { List nums = new ArrayList(); nums.add(3); nums.add(5); nums.add(1); nums.add

对集合中的元素进行排序,接口Comparator&lt;T&gt;和Comparable&lt;T&gt;的使用

关于比较排序比较的接口 或者是类有:java.lang.Comparable<T>接口, 一个抽象类通过实现这个接口可以进行自然排序,也就是一个如果一个自定义类通过implements关键字实现Comparable<T>接口,并且要重写这个接口中的CompareTo()抽象方法,可以再这个方法中定义自己的比较规则:然后再向集合对象中添加元素的时候,就会自动调用compareTo()方法,对集合中的元素进行排序. 对于实现这个接口的类的对象,可以使用Collections类中的静态方

linq 对象属性排序

WSWSVoucher [] wswsv = new WSWSVoucher[4]; wswsv= wswsv.OrderBy(s => s.creditAmount).ToArray<WSWSVoucher>(); wswsv= wswsv.OrderByDescending(s => s.creditAmount).ToArray<WSWSVoucher>(); linq 对象属性排序,布布扣,bubuko.com

如何从List集合中删除对象

这个问题看似好像挺简单挺幼稚的,然而就这个幼稚的问题还曾经困扰过我一阵呢,其实犯这个错误的根本原因是我们对于基础知识的理解和掌握上还有不足的表现,基本功有些人总是觉得不重要,认为更多的扩大学习的广度才是最重要的,我认为这是很容易犯的,同时也是很致命的错误观点! 对基础知识掌握不牢靠,或理解不深刻,写出的代码必然会有40%的概率是错误的.低效的,一段代码不是说没有编译错误就一定是对的,不是说简单的运行下就一定是对的,优秀的代码,是经得起"刀山火海"般的考验的("多线程.效率.安

java 根据对象属性排序

在项目中经常会遇到这杨的情况,在数据中取到的 一个list集合我们需要这个集合是按我们想要的顺序排列 当然你说这可以用数据库order by 就能搞定,ok我们说的用java代码.若你已经选择要使用数据库了请绕行! 好吧居然你选择了往下继续OK 就进入代码吧, ok之前我遇到这样的需求的时候为了简单也使用过数据库来做,后来数据库查询的sql越来越复杂之后就想用j ava来帮帮数据库减轻一下压力."毕竟,压力来自轮胎,就算跳到250P,FC 的马力还是太大,难以做到最大限度的飘逸". 我