为啥java中有两个接口可比较和比较器用于对集合进行排序? [复制]

Posted

技术标签:

【中文标题】为啥java中有两个接口可比较和比较器用于对集合进行排序? [复制]【英文标题】:why there is two interface comparable and comparator in java for sorting the collections? [duplicate]为什么java中有两个接口可比较和比较器用于对集合进行排序? [复制] 【发布时间】:2016-10-23 20:42:54 【问题描述】:

为什么在 java 中有两个接口可比较和比较器用于对集合进行排序?

似乎两者都在执行相同的任务...对这种排序技术感到困惑?请指教

【问题讨论】:

google 在提问之前。 difference between Comparable and Comparator A blog post regarding comparable and comparator 这不是为了讨论,这是为了解决问题,所以请提出正确的问题,检查这个programcreek.com/2011/12/… 【参考方案1】:

人们可能希望以其他方式对给定对象进行排序,而不是在给定对象中定义它(使用Comparable),这就是Comparator 可用的原因。

Comparable - 在给定的类中用于定义默认/自然排序排序

Comparator - 由foreign 代码(例如来自不同库)用于以不同方式对数据进行排序,或将排序添加到未定义Comparable 的类中,或添加不同的排序顺序(例如,有时您可能希望对字符串进行排序不区分大小写,有时也区分大小写)。

【讨论】:

以上是关于为啥java中有两个接口可比较和比较器用于对集合进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

java Set接口(元素不可以重复)

Comparable接口和Comparator接口

Collection接口的常用方法

Java的比较器Comparable与Comparator

Java集合框架总结——Map接口的使用

为啥要使用接口,多重继承与接口,接口的好处?