java arraylist 按照对象的属性排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java arraylist 按照对象的属性排序相关的知识,希望对你有一定的参考价值。

List中的元素是对象的话,若要按该List中元素的某个属性进行排序,那么应该重写里面元素的hashCode和equals方法,然后再排序。比如该问题要重写course的hashCode和equals方法 参考技术A 修改你的
student
class,添加
comparable
接口,重写
compareto
方法。然后你可以用
treeset
结构进行排序。它会自动排序。
参考技术B 建议你用Map,然后0=sunday,1=monday...再通过comparator
用TreeMap排序;或者你继承
Comparable
重写compareTo方法本回答被提问者采纳

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

 

以上是关于java arraylist 按照对象的属性排序的主要内容,如果未能解决你的问题,请参考以下文章

java如何对ArrayList中对象按照该对象某属性排序

java ArrayList按照某个属性升序排序

java List对象排序的问题……

在Java中按属性值对对象ArrayList进行排序

java ArrayList按照枚举排序

ArrayList如何对某个对象的日期属性排序?