Comparator 排序器

### Comparator 排序器 #### 简介 在Java编程语言中,`Comparator`接口是一种非常实用且灵活的工具,用于控制对象的排序方式。它允许开发人员自定义对象的比较逻辑,从而实现对集合(如`List`)中的元素进行排序。`Comparator`接口在`java.util`包中定义,并且是Java集合框架的一部分。 #### `Comparator`接口的基本用法 `Comparator`接口定义了一个名为`compare`的方法,该方法接受两个参数并返回一个整数值。返回值指示第一个参数与第二个参数的相对顺序: - 如果返回负整数,则表示第一个参数小于第二个参数。 - 如果返回零,则表示两个参数相等。 - 如果返回正整数,则表示第一个参数大于第二个参数。 下面将详细介绍如何使用`Comparator`接口以及示例代码中的具体应用。 #### 示例代码分析 在给定的示例代码中,我们创建了一个`BookType`类,该类具有两个属性:`idsn`和`name`。然后,我们定义了两个匿名内部类,它们都实现了`Comparator`接口,分别根据`idsn`和`name`来排序`BookType`对象。 1. **创建BookType对象**: - 创建了一个`List`对象,并向其中添加了三个`BookType`实例,每个实例都有不同的`idsn`和`name`。 2. **定义Comparator**: - 定义了两个`Comparator`实例: - `OrderIsdn`:根据`BookType`的`idsn`属性进行排序。 - `OrderName`:根据`BookType`的`name`属性进行排序。 ```java Comparator<BookType> OrderIsdn = new Comparator<BookType>() { public int compare(BookType b1, BookType b2) { return b1.getIdsn().hashCode() - b2.getIdsn().hashCode(); } }; Comparator<BookType> OrderName = new Comparator<BookType>() { public int compare(BookType b1, BookType b2) { return b1.getName().hashCode() - b2.getName().hashCode(); } }; ``` 3. **使用Comparator进行排序**: - 使用`Collections.sort()`方法对列表进行排序,传入相应的`Comparator`实例作为参数。 - 在本例中,我们使用`OrderName`对列表进行排序,然后使用`Collections.reverse()`方法对列表进行反转,以便按降序显示结果。 ```java Collections.sort(list, OrderName); Collections.reverse(list); ``` 4. **遍历和打印结果**: - 我们遍历排序后的列表,并打印每个`BookType`对象的`idsn`和`name`。 #### 总结 通过以上示例,我们可以看到`Comparator`接口的强大功能。它可以轻松地为任何类型的对象提供自定义排序逻辑。这对于处理复杂的数据结构或需要特定排序规则的应用场景来说非常有用。此外,由于`Comparator`允许传递多个实例,因此可以很容易地实现多级排序或其他更复杂的排序需求。 `Comparator`接口为Java开发者提供了一种高效且灵活的方式来控制对象的排序顺序,使得数据管理变得更加简单有效。在实际项目中合理利用`Comparator`接口,可以帮助开发者更好地组织和展示数据。





















悬赏分:20 - 解决时间:2008-9-3 20:54
对集合排序的例子
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/*
* 当前文件: TestCollections.java
* 创建日期: 2006-6-29
* 版 本 号: 1.0
* 作 者: Stevie Liu
*
*/
/**
* 亲爱的kang1,请您在此详细描述我的用途.
*/
class BookType{
String idsn;
String name;
/**
* @param idsn
* @param name
*/
public BookType(String idsn, String name)
{

- 31351652014-03-27很好 很好用的方法
- dd_pxunl2012-09-14没必要单独上传个文档吧,不过我还是下了 - -!

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 医学院校计算机专业课程体系构建的探索与实践.docx
- 开题报告项目管理系统设计.pdf
- 最新最专业的企业网站推广方案.doc
- 计算机网络课程设计说明书兰州市第九中学校园网组建方案.doc
- 网络销售实习报告1000字.docx
- 国际项目管理专业资质认证IPMP试题概论.doc
- 工业互联网体系架构.doc
- 海赋国际网络营销方案.pptx
- 组合投资风险与收益与其MATLAB实现.doc
- GOSP-硬件开发资源
- 嵌入式系统期末考试试卷.doc
- 软件学院软件工程领域代码.doc
- 基于Android手机蓝牙控制的智能小车设计.doc
- 电子商务公司的口号.doc
- 网络营销战略计划.pptx
- 三菱FX2N系列PLC.ppt


