During interviews, you can face this question differently, if you are giving telephonic round than it's mostly fact based i.e. you need to mention key points about both interfaces, while in face to face interviews or during written test, you might be ask to write code to sort objects using Comparator and Comparable e.g. sorting employee by name or branch. I have already discussed second part of this question here and we will only see fact based differences in this post.
1. Comparator interface is in java.util package, which implies it's a utility class, while Comparable interface is kept on java.lang package, which means it's essential for Java objects.
2. Based on syntax, one difference between Comparable and Comparator in Java is that former gives uscompareTo(Object toCompare), which accepts an object, which now uses Generics from Java 1.5 onwards, whileComparator defines compare(Object obj1, Object obj2) method for comparing two object.
3. Continuing from previous difference between Comparator vs Comparable, former is used to compare current object, represented by this keyword, with another object, while Comparator compares two arbitrary object passed to compare()method in Java.
4. One of the key difference between Comparator and Comparable interface in Java is that, You can only have onecompareTo() implementation for an object, while you can define multiple Comparator for comparing objects on different parameters e.g. for an Employee object, you can use compareTo() method to compare Employees on id, known asnatural ordering, while multiple compare() method to order employee on age, salary, name and city. It's also a best practice to declare Comparator as nested static classes in Java, because they are closely associated with objects they compare.
5. Many Java classes, which make uses of Comparator and Comparable defaults to Comparable and provided overloaded method to work with arbitrary Comparator instance e.g. Collections.sort() method, which is used tosort Collection in Java has two implementation, one which sort object based on natural order i.e. by usingjava.lang.Comparable and other which accepts an implementation of java.util.Comparator interface.
6. One more key thing, which is not a difference but worth remembering is that both compareTo() and compare()method in Java must be consistent with equals() implementation i.e. if two methods are equal by equals() method thancompareTo() and compare() must return zero. Failing to adhere this guideline, your object may break invariants of Java collection classes which rely on compare() or compareTo() e.g. TreeSet and TreeMap.
That's all on difference between Comparator and Comparable in Java. Always remember thatjava.lang.Comparable is used to define natural ordering of an object, while java.util.Comparator can be used to define any ordering based upon your requirements. You can define only one ordering with Comparable but can have multipleComparators. I strongly suggest to look my example of comparator vs comparable to gain more insight on how to use really use it in code. From Java interview point of view, I think, you are good to go if you know this much details.
- 浏览: 422690 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (216)
- JAVA (136)
- Python (7)
- 娱乐生活 (10)
- Cloud (5)
- Linux (9)
- JavaScript (7)
- Oracle (11)
- Groovy (1)
- Mysql (3)
- NoSQL (4)
- tomcat (6)
- apache/nginx (16)
- C/C++ (5)
- 设计模式 (7)
- 架构 (8)
- openstack (1)
- hadoop (2)
- 数据仓库 (7)
- linkedin (17)
- JavaGeeker (54)
- Google (9)
- opensource (44)
- spring (21)
- Performance (39)
- lua (2)
- Rust (1)
- WASM (0)
- Golang (0)
- Microservice (1)
- Blockchain (0)
- Web3 (0)
- 边缘计算 (0)
- 硅谷 (0)
- 密码学 (0)
- BTC (0)
- Ethereum (0)
最新评论
-
u012916287:
请问大神。这个架构是你们公司的产品吗?最近准备搞一个基于spr ...
基于DDD的微服务架构设计 -
铁柱他哥:
能给我一份源码码,我这儿边出了点儿问题我参考一下
Jersey采用JSP模板 -
hch2012:
大神,膜拜! ...
基于DDD的微服务架构设计 -
cywhoyi:
lionld23 写道等着看呢,速度速度我是抽空再写的,整篇文 ...
从demo到支持高并发 -
lionld23:
等着看呢,速度速度
从demo到支持高并发
Difference between Comparator and Comparable in Java - Interview Question
- 博客分类:
- JAVA
- JavaGeeker
发表评论
-
Ethereum Solidity Dapp Game Contract
2019-07-30 17:22 552pragma solidity >=0.4.17 &l ... -
Golang实现以太坊转账
2019-04-28 14:07 1405client, err := ethclient.Dia ... -
支持MapDB的Eventstore
2017-04-11 18:15 1539背景:现在微服务大行其道,虽然微服务开山鼻祖是不建议在微服 ... -
类文件结构解析
2017-03-30 15:39 2093就很好奇反编译出来自己写的代码,这里主要使用了五个工具,i ... -
使用Spring-Cloud搭建微服务架构
2017-02-16 14:00 6081搭建一套微服务架构的,我个人觉得必须如下模块: con ... -
电路熔断器(Circuit Breaker)自我思考
2017-01-07 21:20 2160作者:美团点评技术团 ... -
DDD分布式架构设计的BASE一致性
2016-08-09 16:32 2482问题背景: 在DDD的架构设计中最难以解决的 ... -
支持分布式的callback
2016-08-03 13:10 1128项目背景: 之前在某次培训的分享中,谈到r ... -
基于DDD的微服务架构设计
2016-07-20 17:19 11753DDD领域驱动设计(DDD:Domain-Driven D ... -
使用netty完成proxy-server
2016-06-13 16:34 0项目背景: 现在主流的android与back ... -
从demo到支持高并发
2016-02-25 18:16 3461前言: Java语言作用很大,因有众多分门杂类的 ... -
Vert.x3支持JWT
2015-12-28 20:48 3391知识背景: ... -
MapDB的spring整合使用
2015-12-15 23:26 5094MapDB是一个快速、易用 ... -
MapDB与Spring整合使用
2015-12-14 22:58 27MapDB是一个快速、易 ... -
MapDB与Spring整合使用
2015-12-14 22:56 2MapDB是一个快速、易用的嵌入式Java数据库引擎,它提 ... -
MapDB与Spring整合使用
2015-12-14 22:55 2MapDB是一个快速、易用的嵌入式Java数据库引擎,它提 ... -
基于Spring支持JMX
2015-11-08 00:43 3304前言: 基于Vert写的组件,其中在使用过程 ... -
Vertx与Spring配合完成DML操作
2015-10-29 14:26 11250前言 vertx相较于Tomcat不同之处 引用osc ... -
基于Netty4网站架构
2015-10-28 10:44 11832前言: 本人所在公司在业内比较知名的公司, ... -
异常处理
2015-10-08 16:12 2791首先提倡下Hibernate的验证器,功能强大且使用方面,H ...
相关推荐
模具状态监测市场:6.8%的年复合增长率引领制造业智能化升级 在快速发展的制造业中,模具作为生产过程中的核心部件,其状态直接影响到产品的质量和生产效率。然而,模具的损耗和故障往往难以预测,给企业带来不小的损失。如今,随着模具状态监测技术的兴起,这一切正在发生改变。这项创新技术不仅能够帮助企业提前发现模具的潜在问题,还能显著延长模具的使用寿命,提升生产效率。但你真的了解这个市场的潜力和现状吗?让我们一同揭开模具状态监测市场的神秘面纱。 市场概况: 根据QYR(恒州博智)的统计,2023年全球模具状态监测市场的销售额已经达到了3.2亿美元,预计到2030年,这一数字将攀升至5.06亿美元,年复合增长率高达6.8%。这一显著的增长背后,是制造业对智能化、自动化生产需求的不断提升,以及模具状态监测技术在提高生产效率、降低维护成本方面的显著优势。 技术创新与趋势: 模具状态监测技术主要依赖于传感器、数据分析和处理等技术手段,能够实时采集模具的温度、振动、压力等指标,并通过与预设参数的比对,及时识别模具的异常情况。随着物联网、大数据和人工智能等技术的不断发展,模具状态监测技术将更加智能化,能够提供
Kubernetes DevOps实践工作坊-从理论到实战操作脚本集(含源码).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
基于springboot+vue3+uniapp的点餐小程序源代码+数据库+文档说明(高分毕设),个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于springboot+vue3+uniapp的点餐小程序源代码+数据库+文档说明(高分毕设)基于springboot+vue3+uniapp的点餐小程序源代码+数据库+文档说明(高分毕设)基于springboot+vue3+uniapp的点餐小程序源代码+数据库+文档说明(高分毕设)基于springboot+vue3+uniapp的点餐小程序源代码+数据库+文档说明(高分毕设)基于springboot+vue3+uniapp的点餐小程序源代码+数据库+文档说明(高分毕设)基于springboot+vue3+uniapp的点餐小程序源代码+数据库+文档说明(高分毕设)基于springb
欧姆龙NX1P2系列总线plc程序 自动检测机,plc程序,无触摸屏程序 1.多工位DDR马达转盘控制,多工位同时加工。 2.多产品配方功能程序。 3.各种实用型自制功能块程序,可重复调用,成熟设备
企业微信最全养号、防封、加人机制.pdf
这是一款用 Python 开发的异步爬虫框架,能够将网站上的数据转化成 Markdown、JSON 等 LLM 友好的输出格式。它完全开源且免费,极大地简化了异步爬虫的编写。相比于付费的 Firecrawl,它具有更快的爬取速度,支持同时抓取多个 URL、页面截图、关键字优化提取(基于 LLM)和复杂的多页面会话管理等功能。
毕设Python春节电影信息爬取与可视化分析源码+项目说明+全部资料.zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
2019厦门国际银行数创金融杯源码+竞赛策略报告文档.zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业),个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开
基于java的小区智能卡管理系统设计与实现.docx
NLP中文垃圾短信分类系统源码+设计全部资料+文档报告(自然语言处理课设).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
电源滤波器车辆状态估计,扩展卡尔曼滤波EKF,无迹卡尔曼滤波UKF车辆状态估计,扩展卡尔曼滤波EKF,无迹卡尔曼滤波UKF 角阶跃输入+整车7自由度模型+UKF状态估计模型+附送EKF状态估计模型,针对于轮毂电机分布式驱动车辆,进行车速,质心侧偏角,横摆角速度估计。 模型输入:方向盘转角delta,车辆纵向加速度ax 模型输出:横摆角速度wz,纵向车速vx,质心侧偏角β