How To Sort Objects With Java Interface Comparable and Comparator
来源:互联网 发布:php 粘贴 编辑:程序博客网 时间:2024/06/05 19:22
Java 提供了Comparable 和Comparator 两个接口让程序员可以实现Java对象的排序。
首先总结下Comparable 与Comparator接口的区别:
java.lang.Comparable
java.util.Comparator
int objOne.compareTo(objTwo)
int compare (objOne, objTwo)
返回:
负数: 如果objOne < objTwo
零: 如果 objOne == objTwo
正数: 如果 objOne > objTwo
同 Comparable
必须修改要比较的类的结构,令其实现Comparable接口
编写一个独立的类,令其实现Comparator接口
一个类只能有一种排序
一个类可以有多重排序方式,只要多编写一个Comparator的实现类就好了。
JAVA API中经常用到,例如:String,包装类(Integer, Long, Double…), Date, Calendar …
用于对第三方类的排序,因为第三方类一般都是无法修改的,更别说实现Comparable了,所以只能使用Comparator了。
Comparable 实现对象方式:
package com.citi.crc;public class AudiCar implements Comparable<AudiCar> {private String series;private Double price;private Double speed;public String getSeries() {return series;}public void setSeries(String series) {this.series = series;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public Double getSpeed() {return speed;}public void setSpeed(Double speed) {this.speed = speed;}/* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */@Overridepublic int compareTo(AudiCar o) {return this.getPrice().compareTo(o.getPrice());}}package com.citi.crc;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class TestAudiCar {public static void main(String[] args) {List<AudiCar> cars = new ArrayList<AudiCar>();AudiCar audiA3 = new AudiCar();audiA3.setSeries("A3");audiA3.setPrice(200000d);audiA3.setSpeed(80d);AudiCar audiA4 = new AudiCar();audiA4.setSeries("A4");audiA4.setPrice(260000d);audiA4.setSpeed(90d);AudiCar audiA6 = new AudiCar();audiA6.setSeries("A6");audiA6.setPrice(320000d);audiA6.setSpeed(100d);cars.add(audiA4);cars.add(audiA6);cars.add(audiA3);Collections.sort(cars);//Collections.reverse(cars);for (AudiCar car : cars) {System.out.println(car.getPrice());}}}
Comparator 实现排序方式:
package com.citi.crc;import java.util.Comparator;public class AudiCar {private String series;private Double price;private Double speed;public String getSeries() {return series;}public void setSeries(String series) {this.series = series;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public Double getSpeed() {return speed;}public void setSpeed(Double speed) {this.speed = speed;}static class PriceComparator implements Comparator<AudiCar> {/* (non-Javadoc) * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */@Overridepublic int compare(AudiCar o1, AudiCar o2) {return o1.getPrice().compareTo(o2.getPrice());}}static class SpeedComparator implements Comparator<AudiCar> {/* (non-Javadoc) * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */@Overridepublic int compare(AudiCar o1, AudiCar o2) {return o1.getSpeed().compareTo(o2.getSpeed());}}}package com.citi.crc;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class TestAudiCar {public static void main(String[] args) {List<AudiCar> cars = new ArrayList<AudiCar>();AudiCar audiA3 = new AudiCar();audiA3.setSeries("A3");audiA3.setPrice(200000d);audiA3.setSpeed(80d);AudiCar audiA4 = new AudiCar();audiA4.setSeries("A4");audiA4.setPrice(260000d);audiA4.setSpeed(90d);AudiCar audiA6 = new AudiCar();audiA6.setSeries("A6");audiA6.setPrice(320000d);audiA6.setSpeed(100d);cars.add(audiA4);cars.add(audiA6);cars.add(audiA3);Collections.sort(cars, new AudiCar.PriceComparator());//Collections.sort(cars, new AudiCar.SpeedComparator());for (AudiCar car : cars) {System.out.println(car.getPrice());}}}
- How To Sort Objects With Java Interface Comparable and Comparator
- How to use Comparator and Comparable in Java? With example
- How to use Comparable Interface
- How to sort an NSMutableArray with custom objects in it?
- When to use comparable and comparator interfaces in java
- Comparator and Comparable in Java
- Comparator VS Comparable && sort
- Difference between Comparator and Comparable in Java
- Java object sorting example (Comparable and Comparator)
- Difference between Comparator and Comparable in java
- How to open and sort a CSV file with Ruby
- Comparable and Comparator API
- Comparable and Comparator
- !!!How to initialize pointer with new objects
- Create intelligent Web spiders -How to use Java network objects and HTML objects
- java.util.Collections.sort(List list)与Comparable,Comparator 接口
- java.util.Collections.sort(List list)与Comparable,Comparator
- java Comparable和Comparator
- MySQL数据库中与NULL值有关的几个问题
- 保存复选框(1)
- 转移Itunes目录
- magento:在controller中添加breadcrumbs
- 交叉编译libz libpng
- How To Sort Objects With Java Interface Comparable and Comparator
- VIM 键盘图
- Source Insight 3.5设置支持汇编文件
- POJ 3734 Blocks 矩阵乘法
- Serializable 作用
- Xcode4 SVN配置
- 获取枚举的国际化Key
- SQL 模糊查询
- linux中关于函数的man查询