概念:对两个或多个数据项进行比较,以确定他们是否相等,或确定他们之间的大小关系及排列顺序成为比较。

1.Comparable接口:

此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。

 public class ComparableDemo {

     /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat[] cats={new Cat("tom",4),new Cat("jack",3),new Cat("xiaohua",5)};
Arrays.sort(cats);
for (Cat cat : cats) {
System.out.println(cat);
}
} }
 public class Cat implements Comparable<Cat> {
private String name;
private int age; public Cat() {
super();
// TODO Auto-generated constructor stub
}
public Cat(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Cat [name=" + name + ", age=" + age + "]";
}
//通过此方法实现对象比较
@Override
public int compareTo(Cat o) {
// TODO Auto-generated method stub
if(this.age <o.age ){//从小到大排序
return -1;
}else if(this.age >o.age ){
return 1;
}else{
return 0;
}
} }

2.Comparator接口:(不改变类,再写一个比较类)

强行对某个对象collection进行整体排序的比较。

 public class ComparableDemo {

     /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog[] dogs={new Dog("tom",4),new Dog("jack",3),new Dog("xiaohua",5)};
Arrays.sort(dogs, new DogComparator());
for (Dog dog : dogs) {
System.out.println(dog);
}
} }
 public class Dog {
private String name;
private int age;
public Dog() {
super();
// TODO Auto-generated constructor stub
}
public Dog(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Dog [name=" + name + ", age=" + age + "]";
}
}
 import java.util.Comparator;

 public class DogComparator implements Comparator<Dog>{

     @Override
public int compare(Dog o1, Dog o2) {
// TODO Auto-generated method stub
if(o1.getAge()<o2.getAge()){
return -1;
}else if(o1.getAge()>o2.getAge()){
return 1;
}else{
return 0;
}
} }

最新文章

  1. JFinal - Log 日志
  2. 九、Android学习第八天——广播机制与WIFI网络操作(转)
  3. android 串口调试
  4. android ANR
  5. JavaScript DOM高级程序设计2.1创建可重用的对象--我要坚持到底!
  6. windows的路由例子
  7. Linux shell 的 test 命令用法详解
  8. C---通过指针访问数组
  9. Linq skip skipwhile take takewhile
  10. oracle登陆,在监听服务启动了的情况下,登陆用户还是报错未启动监听服务的错误(刚开始装oracle是能登陆的,重启之后装了plsql)
  11. 小白的Python之路 day1 数据类型,数据运算
  12. hdu 4031 attack 线段树区间更新
  13. java网络爬虫基础学习(一)
  14. 云计算三种服务模式——IaaS、PaaS和SaaS
  15. 在IDEA中spring程序可以正常运行,但IDE报错Could not autowire.
  16. Oracle 的常用概念
  17. 创建一个简单的WCF程序
  18. gitlab操作
  19. linux用户和组
  20. UCOSii和Linux的区别和联系

热门文章

  1. rsync 端口更换(默认873)
  2. Linux使用tcpdump抓取网络数据包示例
  3. Poj_1008--Maya Calendar
  4. C# 播放音乐
  5. stm32之外设控制
  6. %.*s, printf
  7. [hdu2159]FATE二维多重背包(背包九讲练习)
  8. 5.SSRF服务器端请求伪造
  9. 17. CTF综合靶机渗透(十)
  10. SQL Server列属性修改