文章目录前言在这里给大家整理了一下comparable和comparator的用法和区别,这些在以后代码和面试中可能也会出现,那么,就跟着我一起去看看吧! 一.Comparable1.Comparable是什么?publicinterfaceComparablecomparable是个接口,此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。实现此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序2.comparable有用吗?有用的话它有什么用?在这里先给大家一个应用
我最近在SO聊天中看到了一个讨论,但没有明确的结论,所以我最终在那里问了。这是出于历史原因还是与其他语言的一致性?查看各种语言的compareTo的签名时,返回一个int。为什么它不返回枚举。例如在C#中我们可以这样做:enumCompareResult{LessThan,Equals,GreaterThan};和:publicCompareResultCompareTo(Employeeother){if(this.Salary在Java中,枚举是在这个概念之后引入的(我不记得关于C#),但它可以通过一个额外的类来解决,例如:publicfinalclassCompareResult
我最近在SO聊天中看到了一个讨论,但没有明确的结论,所以我最终在那里问了。这是出于历史原因还是与其他语言的一致性?查看各种语言的compareTo的签名时,返回一个int。为什么它不返回枚举。例如在C#中我们可以这样做:enumCompareResult{LessThan,Equals,GreaterThan};和:publicCompareResultCompareTo(Employeeother){if(this.Salary在Java中,枚举是在这个概念之后引入的(我不记得关于C#),但它可以通过一个额外的类来解决,例如:publicfinalclassCompareResult
为什么Collections.sort(List)有签名:publicstatic>voidsort(Listlist)而不是:publicstatic>voidsort(Listlist)我了解它们的用途相同;那么为什么框架开发者会使用第一个选项呢?或者这些声明真的不同吗? 最佳答案 您提议的签名可能适用于Java-8。然而,在以前的Java版本中,类型推断并不是那么聪明。假设您有List.请注意java.sql.Date延长java.util.Date实现Comparable.编译时Listlist=newArrayList()
为什么Collections.sort(List)有签名:publicstatic>voidsort(Listlist)而不是:publicstatic>voidsort(Listlist)我了解它们的用途相同;那么为什么框架开发者会使用第一个选项呢?或者这些声明真的不同吗? 最佳答案 您提议的签名可能适用于Java-8。然而,在以前的Java版本中,类型推断并不是那么聪明。假设您有List.请注意java.sql.Date延长java.util.Date实现Comparable.编译时Listlist=newArrayList()
完整的上下文是:publicclassRClass>我是否正确地说,标题中的陈述意味着插入方法的参数必须是实现Comparable的类的对象或其派生类之一?谢谢。 最佳答案 这意味着类型参数必须支持通过Comparable接口(interface)与自己类型的其他实例进行比较。Oracle教程ObjectOrdering中提供了此类类的示例。.注意与TextendsComparable类似的模式在下面的摘录中:publicclassNameimplementsComparable{...publicintcompareTo(Name
完整的上下文是:publicclassRClass>我是否正确地说,标题中的陈述意味着插入方法的参数必须是实现Comparable的类的对象或其派生类之一?谢谢。 最佳答案 这意味着类型参数必须支持通过Comparable接口(interface)与自己类型的其他实例进行比较。Oracle教程ObjectOrdering中提供了此类类的示例。.注意与TextendsComparable类似的模式在下面的摘录中:publicclassNameimplementsComparable{...publicintcompareTo(Name
Comparable合约规定e.compareTo(null)必须抛出NullPointerException。来自theAPI:Notethatnullisnotaninstanceofanyclass,ande.compareTo(null)shouldthrowaNullPointerExceptioneventhoughe.equals(null)returnsfalse.另一方面,ComparatorAPI没有提到比较null时需要发生什么。考虑以下尝试使用Comparable并为其返回将null作为最小元素的Comparator的通用方法。static>Comparator
Comparable合约规定e.compareTo(null)必须抛出NullPointerException。来自theAPI:Notethatnullisnotaninstanceofanyclass,ande.compareTo(null)shouldthrowaNullPointerExceptioneventhoughe.equals(null)returnsfalse.另一方面,ComparatorAPI没有提到比较null时需要发生什么。考虑以下尝试使用Comparable并为其返回将null作为最小元素的Comparator的通用方法。static>Comparator
我正在寻找compareTo()可以返回0而equals()返回false的所有标准Java类:Comparablecomparable1=???;Comparablecomparable2=???;assertcomparable1.compareTo(comparable2)==0;assert!comparable1.equals(comparable2);我只知道一个:newBigDecimal("1.0")等于newBigDecimal("1")使用compareTo()但不等于使用equals()。还有其他的吗?我对所有这些类都感兴趣,但仅限于公共(public)JavaA