对于Comparable和Comparator这连个相似的接口,还是做一下比较比较好:

  Comparable Comparator
(1)只包含一个compareTo()方法,此方法可以给两个对象排序(负,0,正) 有compare()和equals()两个方法,compare()方法用来给两个参数排序(负,0,正)

(2)如果有一个Person类要实现比较

写在Person类内部:

public class Person implements Comparable{

  private int id;

  

  public int getId(){

    return id;

  }

  public int compareTo(Object o){

    return this.id - ((Person) o).getId;

  }

}

写在Person类外部,Person类不需要有任何变化

public class Person{

  private int id;

  public int getId(){

    return id;

  }

}

public class PersonComparator implements Comparator{

  public int compare(Object o1, Object o2){

    return ((Person) o1).getId - ((Person) o2).getId;

  }

}

(3)使用,personList为Person的集合对象:

Collections.sort(personList)即可进行排序

Collections.sort(personList, new PersonComparator())即可进行排序

其中Comparator使用的是设计模式中的策略模式。

简谈Comparable和Comparator区别的更多相关文章

  1. 浅谈Comparable与Comparator的区别

    平时进行自定义排序一直使用实现Comparable接口,一段时间后操作的时候居然发现有了个Comparator接口 上网差了些资料,总结笔记一下. 基本原理就是比较,底层是二叉树 比如是3,6,5,1 ...

  2. Java中Comparable和Comparator区别小结

    一.Comparable简介 Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collecti ...

  3. Comparable与Comparator区别

    两者都是比较接口 void sort(List<Comparable>); Sorts the specified list in ascending natural order. The ...

  4. Comparable与Comparator区别(实现和使用)

    一.Comparable接口 1.Comparable接口是什么? 此接口强行对实现它的每个类的对象进行整体排序.此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 . ...

  5. Java Comparable与Comparator区别

    1,两种接口的展示 下面的程序是两个类各自实现了Comparable接口.Comparator接口 package com.cnblogs.mufasa.Solution; import java.u ...

  6. 简谈ArrayList和LinkedList区别

    对于ArrayList和LinkedList,他们都实现了List接口,他们的区别大致为: ArrayList LinkedList (1)底层是数组,可以以O(1)的时间复杂度对元素进行随机访问 以 ...

  7. Java中Comparable和Comparator区别

    很好的一篇博客:http://blog.csdn.net/jq_ak47/article/details/61203817 http://www.cnblogs.com/cmxwt/p/6215253 ...

  8. 【软件构造】(转)Java中的comparable和comparator

    为了方便阅读和复习,转载至此,原地址:温布利往事的博客 阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Co ...

  9. Java中Comparable与Comparator的区别

    相同 Comparable和Comparator都是用来实现对象的比较.排序 要想对象比较.排序,都需要实现Comparable或Comparator接口 Comparable和Comparator都 ...

随机推荐

  1. android111 java中调用c代码

    MainActivity: package com.itheima.helloworld1; import android.os.Bundle; import android.app.Activity ...

  2. oc学习笔记2

    .oc中的BOOL类型 oc中的BOOL类型的值为YES和NO,有点小奇怪 在oc中YES不等于1,但是NO一定等于0,所以不要把1和YES来比较 .消息发送 在oc中,经常使用这样的术语:将allo ...

  3. HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法

    在项目中,有一个功能需要请求另外一个项目的接口来获取数据.该项目接口都是通过域名请求访问.每当调用到一定阶段后都会出现未知域名,导致请求数据失败.以下是错误内容 java.net.UnknownHos ...

  4. Unity3D用vistual studio打卡C#脚本卡死解决

    小黑已经跟我3年了,不仅很喜欢他方正酷黑的外表,而且稳定性绝对没的说.我已经3年没有重装过系统了,而且现在装了3个系统!虽然小黑很适合程序员,但是他最大的缺点就是做设计比较吃力,显卡512M.像uni ...

  5. 20160326 javaweb 请求转发和请求包含

    (1)请求转发: this.getServletContext().getRequestDispatcher("").forward(request,response); requ ...

  6. 关于onSaveInstanceState的javadoc的渣渣翻译

    /** * Called to retrieve per-instance state from an activity before being * killed so that the state ...

  7. Jquery Ajax 调用 WebService

    原文:http://www.cnblogs.com/andiki/archive/2010/05/17/1737254.html jquery ajax调用webservice(C#)要注意的几个事项 ...

  8. Cesium的api之关于viewer

    1.viewer是用来构建三维的主要的部件:通过创建viewer可以完成三维的图片.地形的展示等 2.属性 * @param {Element|String} container :指定的是在html ...

  9. postgres create table default now

    key_time timestamp without time zone default timestamp 'now()' see http://wordpress.factj.com/

  10. javascript 基础2第12节

    1. <html> <head> <title>javascript基础</title> </head> <body> 1.Nu ...