根据对象的属性,对集合(list / set)中的对象进行排序

一:针对list

     通过java.util.Collections的sort方法,有2个参数,第一个参数是list对象,第二个参数是new Comparator<对象类>(){}方法,这个方法实现了compare()方法,具体代码如下所示:

package com.example.mylearngit;

import com.example.mylearngit.bean.Student;

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

/**
 * Created by YuShuangPing on 2018/11/27.
 */
public class ListSort {
    public static void main(String[] args){
        List<Student>studentList=new ArrayList<Student>();
        studentList.add(new Student(90,"4"));
        studentList.add(new Student(90,"3"));
        studentList.add(new Student(85,"1"));
        studentList.add(new Student(88,"2"));
        Collections.sort(studentList, new Comparator<Student>() {
            @Override
            public int compare(Student t1, Student t2) {
                if (t1.score>t2.score){
                    return 1;
                }else if (t1.score<t2.score){
                    return -1;
                }else {
                    return t1.order.compareTo(t2.order);// 调用String中的compareTo()方法
                }

            }
        });
        System.out.println(studentList);
    }
}

 

package com.example.mylearngit.bean;

import android.support.annotation.NonNull;

/**
 * Created by YuShuangPing on 2018/11/27.
 */
public class Student {
    public int score;
    public String order;

    public Student(int score, String order) {
        this.score = score;
        this.order = order;
    }

    @Override
    public String toString() {
        return "Student{" +
                "score=" + score +
                ", order='" + order + '\'' +
                '}';
    }
}

代码执行的结果为:

 

二:针对set

     要排序的对象所属的类implements  Comparable接口,重写了compareTo()方法,具体代码如下所示:

package com.example.mylearngit;

import com.example.mylearngit.bean.Person;

import java.util.Set;
import java.util.TreeSet;

/**
 * Created by YuShuangPing on 2018/11/27.
 */
public class SetSort {
    public static void main(String[] args){
        Set<Person>set=new TreeSet<>();
        set.add(new Person(18,"3"));
        set.add(new Person(18,"2"));
        set.add(new Person(16,"4"));
        set.add(new Person(17,"1"));
        System.out.println(set);

    }
}

 

package com.example.mylearngit.bean;

import android.support.annotation.NonNull;

/**
 * Created by YuShuangPing on 2018/11/27.
 */
public class Person implements Comparable<Person>{
    public int age;
    public String order;

    public Person(int age, String order) {
        this.age = age;
        this.order = order;
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", order='" + order + '\'' +
                '}';
    }

    @Override
    public int compareTo(@NonNull Person person) {
        if (this.age>person.age){
            return 1;
        }else if (this.age<person.age){
            return -1;
        }else {
            return this.order.compareTo(person.order);// 调用String中的compareTo()方法
        }
    }
}

代码执行的结果为:

 

要对Java List集合对象根据指定的固定顺序进行排序,可以使用Java的Comparator接口。Comparator接口允许您定义自己的比较器,以便按照特定顺序对对象进行排序。 以下是一个示例代码,演示如何使用Comparator对List集合对象按照指定的顺序进行排序: ```java import java.util.*; public class Main { public static void main(String[] args) { // 创建一个Person对象List集合 List<Person> persons = new ArrayList<>(); persons.add(new Person("Tom", 20)); persons.add(new Person("Jack", 25)); persons.add(new Person("Mary", 22)); persons.add(new Person("Lucy", 21)); // 创建一个Comparator对象,按照指定顺序进行排序 Comparator<Person> comparator = new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return o1.getName().compareTo(o2.getName()); // 按照姓名升序排序 // return o2.getAge() - o1.getAge(); // 按照年龄降序排序 } }; // 使用Collections.sort方法对List集合进行排序 Collections.sort(persons, comparator); // 输出排序后的结果 for (Person person : persons) { System.out.println(person.getName() + " " + person.getAge()); } } } class Person { private String name; private int age; public Person(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; } } ``` 在上面的代码,我们创建了一个Person对象List集合,并创建了一个Comparator对象,按照指定的顺序排序。然后使用Collections.sort方法对List集合进行排序,最后输出排序后的结果。 注意:在Comparator对象的compare方法,必须返回一个整数值,表示两个对象之间的大小关系。如果返回值为负数,则表示第一个对象小于第二个对象;如果返回值为正数,则表示第一个对象大于第二个对象;如果返回值为0,则表示两个对象相等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值