如果想使用排序,那么就一定离不开Comparable 接口。 它是一个简单接口,仅有一个方法compareTo(
public interface java.lang.Comparable {
public int compareTo(Object o);
}
下面是一个简单的例子:
package com.discursive.jccook.collections.compare;
import java.util.*;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.collections.comparators.ReverseComparator;
public class BookComparator implements Comparator {
public int compare(Object o1, Object o2) {
int comparison = -1;
if( o1 instanceof Book && o2 instanceof Book ) {
Book b1 = (Book) o1;
Book b2 = (Book) o2;
String b1Name = b1.getName( );
String b2Name = b2.getName( );
String b1Author = b1.getAuthor( );
String b2Author = b2.getAuthor( );
if( StringUtils.isNotEmpty( b1Name ) &&
StringUtils.isNotEmpty( b2Name ) ) {
comparison = b1Name.compareTo( b2Name );
}
if( comparison == 0 &&StringUtils.isNotEmpty( b1Author ) && StringUtils.isNotEmpty( b2Author ) ) {
comparison = b1Author.compareTo( b2Author );
}
}
return comparison;
}
}
还有一种情况是,使用BeanComparator 对 bean 进行单个属性的排序 ,BeanComparator 是 BeanUtils API 中的一个类,
要求这个bean有这个属性,而且有 get 和 set 方法.
如果找不到该Bean的相对的属性,则会抛出 ClassCastException
例如,"name" 属性来对集合中的 bean 进行排序而建立的实例
private BeanComparator comparator = new BeanComparator("name");
分享到:
相关推荐
Comparable和Comparator接口都可用作普通意义上对象间的比大小,但两个接口在实例化方面的用法不尽相同,接下来我们就来详细对比Java中的Comparable排序接口和Comparator比较器接口
java排序Comparator和Comparable
java通过Comparable接口实现字符串比较大小排序的简单实例
* 元素由它们的⾃然 Comparable 排序,或者通过⼀个由顺序 set 创建时特别提供的 * Comparator。这个 set 的迭代器将会以递增元素顺序横穿 set。提供多个额外的操作来⽀持排 * 序。(这个接⼝与 SortedMap 的 set ...
主要介绍了java 实现Comparable接口排序,升序、降序、倒叙,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort ...
计算机后端-Java-Java核心基础-第22章 常用类 21. Comparable自然排序举例.avi
492.490.JAVA基础教程_常用类-自定义类实现Comparable自然排序(492).rar
计算机后端-Java-Java核心基础-第22章 常用类 22. 自定义类实现Comparable自然排序.avi
主要介绍了Java使用Comparable解决排序问题的方法,涉及java针对文件的相关操作及排序的技巧,需要的朋友可以参考下
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
主要介绍了Java自然排序Comparable使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
下面小编就为大家带来一篇java中实现Comparable接口实现自定义排序的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
设置 job 使⽤⾃定义聚合规则 job.setGroupingComparatorClass() Java 中的排序: Java 中的所有排序都依赖 Comparable 进⾏⼤⼩⽐较的,并且都是升序排列 不能控制排序的⽅式,但是可以控制⼤⼩⽐较的结果 通过...
简单的用于页面表单排序的后台方法,通过实现Comparable轻松搞定
Comparable是 排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作...
在 java 中,要实现类的大小比较可以实现 Comparable 接口并通 过重写 compareTo 方法来实现。 在 Mapreduce 中,如果需要自定义类的排序规则,需要让类实现 Writable 的子接口 WritableComparable,重写里面的 ...
可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组
接口回调 用哥德巴赫猜想来总结,哥德巴赫猜想就是要去输入一个偶数,输出这个偶数能被分解为哪两个质数的和,具体实现就是要去验证拆分出来的两个数是否为质数。 传统的方法我们需要先把验证质数的方法写好,然后...
总结一下: ArrayList:如果是查改多,用...一般是默认排序用自然排序(Comparable接口),特殊排序用定制排序(Comparetor接口实现) LinkedHashSet:如果需要元素不重复,并且,有存入和取出顺序要求用LinkedHashSet