集合排序
来源:互联网 发布:网络药品经营许可证 编辑:程序博客网 时间:2024/05/02 12:54
在Java中对一个装着对象的集合进行排序有两种方法:
1. 对象实现Comparable接口
2. 使用Comparator接口
我们定义一个Student对象,包含两个成员:名字name和学号number,实现Comparable接口
public class Student implements Comparable<Student>{private String name;private String number;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}@Overridepublic String toString() {return "Student [name=" + name + ", number=" + number + "]";} /** * Comparable接口的compareTo方法 */@Overridepublic int compareTo(Student o) {//比较两个学生的姓名return this.name.compareTo(o.getName());}}
定义一个Car类,用来展示使用Comparator来对集合进行排序
public class Car {private String type;private int price;public Car(String type, int price) {this.type = type;this.price = price;}public String getType() {return type;}public void setType(String type) {this.type = type;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}@Overridepublic String toString() {return "Car [type=" + type + ", price=" + price + "]";}}
定义Comparator的实现类,泛型的参数是Car
public class CarComparator implements Comparator<Car>{@Overridepublic int compare(Car car1, Car car2) {return car1.getType().compareTo(car2.getType());}}
public class Test{public static void main(String[] args) {List<Student> students = new ArrayList<Student>();Student student1= new Student("周伯通","2013");Student student2= new Student("欧阳锋","2014");Student student3= new Student("郭靖","2015");Student student4= new Student("黄蓉","2016");Student student5= new Student("杨过","2017");Student student6= new Student("小龙女","2018");students.add(student1);students.add(student2);students.add(student3);students.add(student4);students.add(student5);students.add(student6);//排序前System.out.println("--------------排序前-----------------");for(Student student: students){System.out.println(student.toString());}System.out.println();//排序后System.out.println("--------------排序后-----------------");//进行排序Collections.sort(students);for(Student student: students){System.out.println(student.toString());}List<Car> cars = new ArrayList<Car>();Car car1 = new Car("兰博基尼",525);Car car2 = new Car("玛莎拉蒂",323);Car car3 = new Car("保时捷",260);Car car4 = new Car("法拉利",487);Car car5 = new Car("奥迪",80);Car car6 = new Car("布加迪威龙",526);cars.add(car1);cars.add(car2);cars.add(car3);cars.add(car4);cars.add(car5);cars.add(car6);System.out.println();System.out.println();System.out.println("---------Comparator的使用-----------");//排序前System.out.println("--------------排序前-----------------");for(Car car: cars){System.out.println(car.toString());}System.out.println();//排序后System.out.println("--------------排序后-----------------");//进行排序Collections.sort(cars, new CarComparator());for(Car car: cars){System.out.println(car.toString());}}}
运行截图:
相对于Comparable,Comparator可以更好地根据情况更改排序的字段,即对哪个属性进行排序。Comparable是一种写死了的形式,每次更改时都需要更改实现了Comparable接口的compareTo方法的方法体。
0 0
- 集合排序
- 集合排序
- 排序集合
- 集合排序
- 集合排序
- 集合排序
- 集合排序
- 排序集合
- 排序集合
- 集合排序
- 集合排序
- 集合排序
- 集合排序
- 集合排序
- 集合排序
- 集合排序
- 集合排序--自然排序
- Java-集合--Java集合排序
- windows下使用curl命令
- Java 并发编程之ReentrantLock和synchronized锁
- centos6.5网络配置
- 遇到 JDBC执行sql查询,报[列名无效]问题
- spark transform系列__distinct
- 集合排序
- WebSocket的JavaScript例子
- 文章标题
- AS引入本地外部项目的Module
- hibernate查询出的list内容在前端页面无法显示解决方案
- 清除
- crontab 用法
- 教你如何监控 Apache?
- hdoj5510Bazinga【strstr+并查集】