简谈Comparable和Comparator区别
对于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区别的更多相关文章
- 浅谈Comparable与Comparator的区别
平时进行自定义排序一直使用实现Comparable接口,一段时间后操作的时候居然发现有了个Comparator接口 上网差了些资料,总结笔记一下. 基本原理就是比较,底层是二叉树 比如是3,6,5,1 ...
- Java中Comparable和Comparator区别小结
一.Comparable简介 Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collecti ...
- Comparable与Comparator区别
两者都是比较接口 void sort(List<Comparable>); Sorts the specified list in ascending natural order. The ...
- Comparable与Comparator区别(实现和使用)
一.Comparable接口 1.Comparable接口是什么? 此接口强行对实现它的每个类的对象进行整体排序.此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 . ...
- Java Comparable与Comparator区别
1,两种接口的展示 下面的程序是两个类各自实现了Comparable接口.Comparator接口 package com.cnblogs.mufasa.Solution; import java.u ...
- 简谈ArrayList和LinkedList区别
对于ArrayList和LinkedList,他们都实现了List接口,他们的区别大致为: ArrayList LinkedList (1)底层是数组,可以以O(1)的时间复杂度对元素进行随机访问 以 ...
- Java中Comparable和Comparator区别
很好的一篇博客:http://blog.csdn.net/jq_ak47/article/details/61203817 http://www.cnblogs.com/cmxwt/p/6215253 ...
- 【软件构造】(转)Java中的comparable和comparator
为了方便阅读和复习,转载至此,原地址:温布利往事的博客 阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Co ...
- Java中Comparable与Comparator的区别
相同 Comparable和Comparator都是用来实现对象的比较.排序 要想对象比较.排序,都需要实现Comparable或Comparator接口 Comparable和Comparator都 ...
随机推荐
- 111_leetcode_Best Time to Buy and Sell Stock III
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- android100 自定义内容提供者
#ContentProvider,就是来操作数据的,增删改查, * 四大组件之一 * 应用的数据库是不允许其他应用访问的 * 内容提供者的作用就是让别的应用访问到你的数据库 * 内容提供者的作用:把私 ...
- Bash String Manipulation Examples – Length, Substring, Find and Replace--reference
In bash shell, when you use a dollar sign followed by a variable name, shell expands the variable wi ...
- Cookie中的三个容器request,session,application的设置和获取
public class SaveServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpSer ...
- js函数、表单验证
惊天bug!!!在script里面只要有一点点错误,就都不执行了!!!所以每写一个方法,就跑一下,因为这个书写疏忽导致的bug不可估量!!! [笑哭,所以我才这么讨厌js么,后来真心的是一点都不想再看 ...
- PHP + ajax 实现异步登录验证
login.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- Socket.io各个发送消息的含义
// send to current request socket client socket.emit('message', "this is a test"); // send ...
- Chrome资源加载被Cancel的问题
好个表久没写文章了. 做为一个砖业的砖工只能天天搬砖做些没有营养没有技术难度的活儿. 最近折腾个网站.发现一个很奇怪的问题- 各种图片的请求被取消了状态为Canceled. 顿时Chrome变成一个更 ...
- DotNet Core 之旅(一)
1.下载安装 DotNetCore.1.0.0-SDK.Preview2-x64.exe 下载链接:https://www.microsoft.com/net/download ps:如果有vs201 ...
- iOS谋职之OC面试题
iOS谋职之OC面试题 iOS求职之OC面试题 IOS求职之OC面试题 1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议. 2.#import和 ...