ArrayList存储学生对象并排序

需求:ArrayList存储学生对象,使用Collections对ArrayList进行排序

        要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序

思路:

        定义学生类

        创建ArrayList集合对象

        创建学生对象

        把学生添加到集合

        使用Collections对ArrayList集合排序

        遍历集合

代码实现:

        定义Student学生类

package com.aynu4;

//定义学生类

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

编写CollectionsDemo类

package com.aynu4;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

//
//需求:ArrayList存储学生对象,使用Collections对ArrayList进行排序
//        要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序
//
//        思路:
//            定义学生类
//            创建ArrayList集合对象
//            创建学生对象
//            把学生添加到集合
//            使用Collections对ArrayList集合排序
//            遍历集合
public class CollectionsDemo {
    public static void main(String[] args) {

        //创建ArrayList集合对象
        ArrayList array = new ArrayList();

        //创建学生对象
        Student s1 = new Student("linqingxia", 30);
        Student s2 = new Student("zhangmanyu", 35);
        Student s3 = new Student("wangzuxian", 33);
        Student s4 = new Student("liuyan", 33);

        //把学生对象添加到集合
        array.add(s1);
        array.add(s2);
        array.add(s3);
        array.add(s4);

        //使用Collections对ArrayList集合排序
        //sort (list list, Comparator c)
        Collections.sort(array, new Comparator() {
            @Override
            public int compare(Student s1, Student s2) {
                //按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序
                int num=s1.getAge()-s2.getAge();
                int num2=num==0?s1.getName().compareTo(s2.getName()):num;
                return num2;
            }
        });

        //遍历集合
        for (Student s:array){
            System.out.println(s.getName()+","+s.getAge());
        }

    }
}

运行结果:

        linqingxia,30
        liuyan,33
        wangzuxian,33
        zhangmanyu,35 

 

你可能感兴趣的:(java)