深入学习java源码之 Arrays.sort()与Arrays.parallelPrefix()
Comparator接口
能对不同类型的对象进行排序(当然排序依据还是基本类型),也不用自己实现排序算法,用起来很方便。
对任意类型集合对象进行整体排序,排序时将此接口的实现传递给Collections.sort方法或者Arrays.sort方法排序。 实现int compare(T o1, T o2);
方法,返回正数,零,负数各代表大于,等于,小于。
public class Test {
private final class CompareName implements Comparator {
boolean is_Ascend;
public CompareName(boolean b) {
// TODO Auto-generated constructor stub
is_Ascend = b;
}
@Override
public int compare(Milan o1, Milan o2) {
// TODO Auto-generated method stub
if (is_Ascend)
return o1.p_Name.compareTo(o2.p_Name);
else
return o2.p_Name.compareTo(o1.p_Name);
}
}
private final class CompareId implements Comparator {
boolean is_Ascend;
public CompareId(boolean b) {
// TODO Auto-generated constructor stub
is_Ascend = b;
}
@Override
public int compare(Milan o1, Milan o2) {
// TODO Auto-generated method stub
int a, b;
if (is_Ascend) {
a = o1.p_Id;
b = o2.p_Id;
} else {
a = o2.p_Id;
b = o1.p_Id;
}
if (a > b)
return 1;
else if (a == b)
return 0;
else
return -1;
}
}
public static void main(String[] args) {
Test t = new Test();
Milan p1 = new Milan(1, "Dida");
Milan p2 = new Milan(2, "Cafu");
Milan p3 = new Milan(3, "Maldini");
Milan P4 = new Milan(6, "Baresi");
Milan p5 = new Milan(9, "Inzaghi");
Milan P6 = new Milan(10, "Costa");
List mList = new ArrayList();
mList.add(p1);
mList.add(P6);
mList.add(P4);
mList.add(p2);
mList.add(p5);
mList.add(p3);
System.out.println("初始顺序");
System.out.println("姓名 | 号码");
for (Milan p : mList) {
System.out.println(p.p_Name + " | " + p.p_Id);
}
System.out.println();
System.out.println("对号码降序");
System.out.println("姓名 | 号码");
Collections.sort(mList, t.new CompareId(false));
for (Milan p : mList) {
System.out.println(p.p_Name + " | " + p.p_Id);
}
System.out.println();
System.out.println("对姓名升序");
System.out.println("姓名 | 号码");
Collections.sort(mList, t.new CompareName(true));
for (Milan p : mList) {
System.out.println(p.p_Name + " | " + p.p_Id);
}
}
}
Comparator
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?