本篇文章主要介绍了"java comparator和comparable",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
有两种方式可以进行集合排序 :集合中对象的所属类实现了 java.lang.Comparable 接口为集合指定比较器 java.lang.Comparator...
我们如果需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口);那么可以建立一个该类的比较器来排序,这个比较器只需要实现Comparator接口即可。
namely, 通过实现Comparator类来新建一个比较器,然后通过该比较器来对类进行排序。Comparator 接口其实就是一种策略模式的实践
接口作用?
1.如果一个类已经开放完成,但是在此类建立的初期并没有实现 Comparable 接口,此时肯定是无法进行对象排序操作的,所以为了解决这一的问题,java 又定义了另一个比较器的操作接口 Comparator 此接口定义在 java.util 包中
2. 为了使用不同的排序标准做准备,比如升序,降序或者其他什么序列
如何定义?
接口仅仅包括两个函数
package java.util;
publicinterfaceComparator<T> {
intcompare(T o1, T o2);
booleanequals(Object obj);
}
若一个类要实现Comparator接口:它一定要实现compare(T o1, T o2)函数,但是可以不实现equals函数。
为什么可以不实现 equals(Object obj) 函数呢? 因为任何类,默认都是已经实现了 equals(Object obj) 的。 Java 中的一切类都是继承于 java.lang.Object,在 Object.java 中实现了 equals(Object obj) 函数;所以,其它所有的类也相当于都实现了该函数。
int compare(T o1, T o2) 是 “比较 o1 和 o2 的大小”。返回 “负数”,意味着 “o1 比 o2 小”;返回 “零”,意味着 “o1 等于 o2”;返回 “正数”,意味着 “o1 大于 o2”。
举个例子,Student例子已经写完,但是想根据age进行排序
Student stu[] = {
new Student("张三" ,23),
new Student("李四" ,26)
, new Student("王五" ,22)};
Arrays. sort(stu,new MyComparator());
List list = new ArrayList();
list.add( new Student("zhangsan" ,31));
list.add( new Student("lisi" ,30));
list.add( new Student("wangwu" ,35));
Collections. sort(list,new MyComparator());
3.Comparable 和 Comparator比较