Java按照对象属性排序的两种方法

xiaoxiao2021-02-28  51

转载请标明出处:http://blog.csdn.net/wangtaocsdn/article/details/71500500

方法一:将要排序的对象类实现Comparable<>接口。

public class Employee implements Comparable<Employee>{ private String name; private Integer age; private Double money; public Employee(String name, Integer age, Double money) { super(); this.name = name; this.age = age; this.money = money; } @Override public String toString() { return "Employee [name=" + name + ", age=" + age + ", money=" + money + "]"; } @Override public int compareTo(Employee o) { return (int) (this.money - o.money); } }

import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Test { public static void main(String[] args) { List<Employee> list = new ArrayList<Employee>(); list.add(new Employee("小红",20,88.8)); list.add(new Employee("小明",21,66.6)); list.add(new Employee("小亮",22,90.0)); System.out.println("排序前:"); for (Employee e : list) { System.out.println(e.toString()); } Collections.sort(list); System.out.println("排序后:"); for (Employee e : list) { System.out.println(e.toString()); } } }

根据money排序:

排序前: Employee [name=小红, age=20, money=88.8] Employee [name=小明, age=21, money=66.6] Employee [name=小亮, age=22, money=90.0] 排序后: Employee [name=小明, age=21, money=66.6] Employee [name=小红, age=20, money=88.8] Employee [name=小亮, age=22, money=90.0]

方法二:使用Comparator匿名内部类实现。

public class Employee{ String name; Integer age; Double money; public Employee(String name, Integer age, Double money) { super(); this.name = name; this.age = age; this.money = money; } @Override public String toString() { return "Employee [name=" + name + ", age=" + age + ", money=" + money + "]"; } }

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { List<Employee> list = new ArrayList<Employee>(); list.add(new Employee("小红",20,88.8)); list.add(new Employee("小明",23,66.6)); list.add(new Employee("小亮",22,90.0)); System.out.println("排序前:"); for (Employee e : list) { System.out.println(e.toString()); } Collections.sort(list, new Comparator<Employee>() { @Override public int compare(Employee o1, Employee o2) { return o1.age - o2.age; } }); System.out.println("排序后:"); for (Employee e : list) { System.out.println(e.toString()); } } }

根据age排序:

排序前: Employee [name=小红, age=20, money=88.8] Employee [name=小明, age=23, money=66.6] Employee [name=小亮, age=22, money=90.0] 排序后: Employee [name=小红, age=20, money=88.8] Employee [name=小亮, age=22, money=90.0] Employee [name=小明, age=23, money=66.6]

转载请注明原文地址: https://www.6miu.com/read-71734.html

最新回复(0)