草庐IT

Comparable

全部标签

java - 如何实现 Comparable 使其与身份平等一致

我有一个类,它的相等性(根据equals())必须由对象标识定义,即this==other.我想实现Comparable来排序这些对象(比如通过一些getName()属性)。为了与equals()保持一致,compareTo()不得返回0,即使两个对象具有相同的名称也是如此。有没有办法在compareTo的意义上比较对象身份?我可以比较System.identityHashCode(o),但在哈希冲突的情况下仍会返回0。 最佳答案 我认为真正的答案是:那时候不要实现Comparable。实现此接口(interface)意味着您的对象

compare - 如何实现 Swift 的 Comparable 协议(protocol)?

如何在Swift中使用Comparable协议(protocol)?在声明中它说我必须实现三个操作=。我把所有这些都放在类里面,但它不起作用。我还需要拥有所有这三个吗?因为应该可以从一个中推导出所有这些。 最佳答案 Comparable协议(protocol)扩展了Equatable协议(protocol)->实现它们在Apple'sReference是Apple的一个示例(在Comparable协议(protocol)引用中),您可以看到应该如何做:不要将操作实现放在类中,而是放在外部/全局范围内。此外,您只需实现来自Compar

Java "unchecked call to compareTo(T) as a member of the raw type java.lang.Comparable"

我正在尝试将排序列表作为Java中的一个简单练习来实现。为了使其通用,我有一个add(Comparableobj)所以我可以将它与任何实现Comparable接口(interface)的类一起使用。但是,当我在代码中的任何位置使用obj.compareTo(...)时,我得到"uncheckedcalltocompareTo(T)作为原始类型java.lang的成员.Comparable"来自编译器(带有-Xlint:unchecked选项)。代码工作得很好,但我不知道如何摆脱那个烦人的消息。有什么提示吗? 最佳答案 本质上,此警告

java - 如何在 Java 中的字符串上使用 Comparable CompareTo

我可以使用它来按empid排序,但我不确定是否可以比较字符串。我收到一个错误,该运算符未定义字符串。publicintcompareTo(Empi){if(this.getName()==((Emp)i).getName())return0;elseif((this.getName())>((Emp)i).getName())return1;elsereturn-1; 最佳答案 你需要用到的是Strings的compareTo()方法。returnthis.getName().compareTo(i.getName());这应该可以

java.lang.Comparable 和等于

如果我为一个类实现java.lang.Comparable,我还需要重写equals()方法吗?或者Comparable是否也适用于equals?如果答案是否,那么如果出现一些差异怎么办?假设我在equals()方法中将两个对象称为相等的方式与我在compareTo()中将同一类的两个对象称为相等的方式不同可比。此外,如果我实现Comparable,我是否也必须重写equals()? 最佳答案 虽然建议(并且非常明智)具有a.compareTo(b)==0意味着a.equals(b)(反之亦然),它是不是必需的。Comparable

java - 不能转换为 java.lang.Comparable

importjava.util.HashMap;importjava.io.*;importjava.util.*;publicclassFeganimplementsComparable{HashMapcart=newHashMap();Listlist=newArrayList();intx=0;publicvoidaddToCart(FoodItemsf){cart.put(f.name,f.valueOfFood);}publicStringdisplay(FoodItemsf){return(f.name+"costs"+f.valueOfFood);}publicvoida

java - 泛型<T extends Comparable<?的解释collection.sort/comparable 代码中的 super T>>?

我一直使用可比较的接口(interface)通过collection.sort为我的类(class)提供自然排序。基本上如果我有一个person类,我会让它实现Comparable接口(interface),并提供compareTo的实现。但是在javadocs中Collections.sort的定义中,我看到了这个签名publicstatic>voidsort(Listlist)我根本不理解这个泛型定义?不应该只是说>有人可以帮我解决这个问题吗? 最佳答案 其实就是说T可以实现Comparable,而不仅仅是Comparable.

comparable - 如何根据/比较 Kotlin 中的多个值进行排序?

假设我有一个classFoo(vala:String,valb:Int,valc:Date)我想对Foo的列表进行排序在所有三个属性上。我该怎么办? 最佳答案 Kotlin的标准库为此提供了许多有用的辅助方法。首先,您可以使用compareBy()定义一个比较器。方法并将其传递给sortedWith()扩展方法来接收列表的排序副本:vallist:List=...valsortedList=list.sortedWith(compareBy({it.a},{it.b},{it.c}))第二,你可以让Foo实现Comparable使用

java - 为什么 java.lang.Number 不实现 Comparable?

这个问题在这里已经有了答案:ComparingthevaluesoftwogenericNumbers(12个回答)关闭5年前。有谁知道为什么java.lang.Number没有实现Comparable?这意味着您不能使用Collections.sort对Number进行排序,这在我看来有点奇怪。发布讨论更新:感谢所有有用的回复。我最终做了somemoreresearchaboutthistopic.为什么java.lang.Number没有实现Comparable最简单的解释是出于对可变性的担忧。回顾一下,java.lang.Number是AtomicInteger、AtomicLo

java : Comparable vs Comparator

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicates:differencebetweencompare()andcompareTo()Java:WhatisthedifferencebetweenimplementingComparableandComparator?Comparable和Comparator之间的主要区别是什么。在什么情况下哪个比另一个更受欢迎?谢谢已更新-与示例的良好链接!!http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html