对ArrayList中的Person对象按照先年龄从大到小,相同年龄的再按照姓名(姓名是英文的)的字母顺序进行排序.


ListDemo2.java
-----------------
package com.fs.test;

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

/*
 * Collections可以针对ArrayList存储基本包装类的元素排序,存储自定义对象可不可以排序呢?
 */
public class Listdemo2 {
    public static void main(String[] args) {
        // 创建集合对象
        List<Person2> list = new ArrayList<Person2>();

        Person2 s1 = new Person2("Bobby",18);
        Person2 s2 = new Person2("Mike",20);
        Person2 s3 = new Person2("Jim",35);
        Person2 s4 = new Person2("Zoe",27);
        Person2 s5 = new Person2("Dave",18);
        Person2 s6 = new Person2("Madison",35);
        Person2 s7 = new Person2("Caden",40);
        Person2 s8 = new Person2("Ava",23);
        Person2 s9 = new Person2("Noah",25);
        Person2 s10 = new Person2("Isabella",27);
        Person2 s11 = new Person2("Lucas",25);
 
        // 添加元素对象
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
        list.add(s6);
        list.add(s7);
        list.add(s8);
        list.add(s9);
        list.add(s10);
        list.add(s11);
 
        // 排序
        // 自然排序
        // Collections.sort(list);
        // 比较器排序
        // 如果同时有自然排序和比较器排序,以比较器排序为主
        Collections.sort(list, new Comparator<Person2>() {
            @Override
            public int compare(Person2 s1, Person2 s2) {
                  if(s1.getAge()-(s2.getAge())!=0){
                       return s1.getAge()-(s2.getAge());
                    }else{
                       return  s1.getName().compareTo(s2.getName());
                     }
            }
        });
 
        // 遍历集合
        for (Person2 s : list) {
            System.out.println(s.getName() + "---" + s.getAge());
        }
    }
}

Person2,java
-------------------package com.fs.test;

public class Person2  {
    private String name;
    private int age;
 
    public Person2() {
        super();
    }
 
    public Person2(String name, int age) {
        super();
        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;
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 .定义一个学生类Student,包含三个属性姓名、年龄、性别,创建三个学生对象存入ArrayList集合中。 跑步减肥 不同年龄要有不同配速 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。 java -封装一个类。(姓名、年龄、性别) (结构体)有结构体:学号、姓名、性别、年龄,要求键盘输入5个学生的信息,以年龄对5个学生排序。 建立一个链表,每个结点包括:学号、姓名、性别、年龄 输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去 2017.4.20实验三:2、定义一个包含学生学号、姓名、年龄和三门课成绩的结构体,输入10个学生信息,并按总成绩由高到低的顺序排序并输出。 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1 题目:写出一条SQL语句,查询工资高于10000,且与他所在部门的经理年龄相同的职工姓名。
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM