对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;
    }
}

原文地址:https://www.cnblogs.com/ooo888ooo/p/11144916.html

时间: 2024-11-05 20:33:12

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

ht-7 对arrayList中的自定义对象排序

1 package com.iotek.set; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.List; 7 /** 8 * 9 * 对ArrayList容器中的内容进行排序: ArrayList中存储多个Person对象(具有name,age,id属性), 10 * 要求按照年龄从小到大排序,年龄相等的话再按照名

将字符串中的字符按字符出现个数从大到小进行排序

最近同事出去面试,有个关于将字符串数组中的字符串按出现次数排序按从大到小,要求5分钟之内写出来.很尴尬,没有写出来.我也来一次回顾吧 对于这种: 1 String stri = "agasdfasdfdccvvasdfg"; 或者这种 1 String str = "a,b,c,a,v,d,f,s,s,f,f,sd"; 其实都是一样的. 第一种实现: 思路:1.将其转化为数组,2.定义一个map,key为字符/字符串的值,value为出现的次数 3.将map的val

去除ArrayList中的重复元素

ArrayList中可以存在重复元素的,若要去除重复元素必须要进行扫描,其实在原理上和数组去除重复元素是一样的. 可以利用contains方法来确定ArrayList中是否存在某个元素. 但是ArrayList中可以放任意的对象,那怎么定义各个对象是否是相同的? 可以通过自己定义类的专属equals方法,定义规则确定某两个对象是否相同,因为contains在判断某个元素是否存在ArrayList中,也是在比较这个元素时候是否和容器中存在的元素相同,若相同则存在,若不相同则不存在,contains

Floodlight 中创建消息对象的方法

在 floodlight 中创建各种openflow message 和 action 等采用的是简单工厂方式,BasicFactory类(实现OFMessageFactory接口,)会根据消息的类型创建不同的对象,达到更好的封装效果:此外这里调用的是枚举类型的方法.下面是具体代码: ----------工厂接口,还有OFActionFactory,约束需要具体工厂完成的事情 public interface OFMessageFactory { // 根据消息类型得到具体的实例 public 

java中Comparable实现对象的比较

/* class A implements Comaprable<A>{ } 那么 A x = new A(); 类关系图 Object o = A; Object Comparable c = A; | Comparable A 实现了 Comparable 接口嘛 |-----|-----A 所以有 o instanceof A == true; o instanceof Comparable == true; 例如ArrayList添加对象实例时,对象实例添加之后先向上转型为Object

Iterator的remove方法可保证从源集合中安全地删除对象(转)

import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorTest{ public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("Test1"); list.add("Test2&qu

Dom4j解析语音数据XML文档(注意ArrayList多次添加对象,会导致覆盖之前的对象)

今天做的一个用dom4j解析声音文本的xml文档时,我用ArrayList来存储每一个Item的信息,要注意ArrayList多次添加对象,会导致覆盖之前的对象:解决方案是在最后将对象添加入ArrayLis时先new 一个对象,然后将之前那个对象的属性set到新的对象中,之后在加入到 ArrayList,就不会出错了. package parseXML; import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.E

如何把一个Array 复制到ArrayList中?

如何把一个Array 复制到ArrayList中? string[] array = new string[]{" 1", "2"," 3", "4"," 5" }; ArrayList list = new ArrayList();一:使用for循环,将array数组中的数据逐步加入到ArrayList的对象中: //1.for循环            for (int i = 0; i < ar

ArrayList中modCount的作用

在ArrayList中有个成员变量modCount,继承于AbstractList. 这个成员变量记录着集合的修改次数,也就每次add或者remove它的值都会加1.这到底有什么用呢? 先看下面一段测试代码: package temp; import java.util.ArrayList; import java.util.List; import java.util.Iterator; public class demo { public static void main(String[]