
扫码关注微信公众号
回复“面试手册”,获取本站PDF版
回复“简历”,获取高质量简历模板
回复“加群”,加入程序员交流群
回复“电子书”,获取程序员类电子书
当前位置:
Java > Java集合高频面试题 > 9.comparable 和 comparator的区别?
本文链接:https://www.mianshi.online/java-collection-comparable-comparator.html
comparable
接口出自java.lang
包,可以理解为一个内比较器,因为实现了Comparable
接口的类可以和自己比较,要和其他实现了Comparable
接口类比较,可以使用compareTo(Object obj)
方法。compareTo
方法的返回值是int
,有三种情况:- 返回正整数(比较者大于被比较者)
- 返回0(比较者等于被比较者)
- 返回负整数(比较者小于被比较者)
comparator
接口出自java.util
包,它有一个compare(Object obj1, Object obj2)
方法用来排序,返回值同样是int
,有三种情况,和compareTo
类似。
它们之间的区别:很多包装类都实现了comparable
接口,像Integer
、String
等,所以直接调用Collections.sort()
直接可以使用。如果对类里面自带的自然排序不满意,而又不能修改其源代码的情况下,使用Comparator
就比较合适。此外使用Comparator
可以避免添加额外的代码与我们的目标类耦合,同时可以定义多种排序规则,这一点是Comparable
接口没法做到的,从灵活性和扩展性讲Comparator更优,故在面对自定义排序的需求时,可以优先考虑使用Comparator
接口。
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版