我希望有一个更具体的可比接口,以便我可以更好地键入返回参数。该界面目前如下所示:
public interface specialComparable<T extends specialComparable<T>> extends Comparable<T> {
}
现在,当我尝试对这些更具体的可比值列表进行排序时,如下所示,我收到一个错误,因为b的类型是“RankComparable”而不是类型“T”。
public class userClass {
public <T extends specialComparable<T>> userClass(List<specialComparable<T>> comparables) {
Collections.sort(comparables, (a, b) -> a.compareTo(b));
}
}
为了解决这个问题,我可以实现如下所示的Self方法。这将解决我的问题,但它看起来非常丑陋。如果有人能找到解决这个问题的更好的办法,我会很高兴。
public interface specialComparable<T extends specialComparable<T>> extends Comparable<T> {
T self();
}
public class userClass {
public <T extends specialComparable<T>> userClass(List<specialComparable<T>> comparables) {
Collections.sort(comparables, (a, b) -> a.compareTo(b.self()));
}
}
你的问题不就在这里吗?
public <T extends specialComparable<T>> userClass(List<specialComparable<T>> comparables) {
您有一个<代码>列表
你的签名应该是
public <T extends specialComparable<T>> userClass(List<T> comparables) {
在FWIW中,这个接口似乎没有用,因为它没有向常规的可比的
添加任何方法。该方法也是相当冗余的。您只需在任何<code>可比</code>列表中调用即可。
listOfComparables.sort(Comparator.naturalOrder());
我正在尝试创建一个二进制搜索程序,该程序可以使用各种类型的变量(int、float、string等)来查看数组中是否存在元素。我正试图找出如何比较变量。下面是我正在使用的内容的草图: 我甚至不确定使用对象是否是最好的方法。
问题内容: 最近在一次求职面试中,有人问我以下问题(对于Java): 鉴于: 的返回值是多少 我回答它会返回false,因为它们是两个不同的对象,并且==是内存地址比较而不是值比较,并且需要使用.equals()比较String对象。但是我被告知,尽管.equals(0方法论是正确的,但是该语句仍然返回true。我想知道是否有人可以向我解释为什么它是正确的,但是为什么我们还在学校里教我们使用equ
代码: 输出:(增加空白行以提高可读性) 有两件事我不明白: null 我还查看了date.equals()的实现: 那么,为什么返回false,尽管为两个对象都返回了1406498400000? 参考:http://docs.oracle.com/javase/7/docs/api/java/util/date.html#equals(java.lang.object)
我已经被覆盖了hashcode和equals以查找具有相同开始日期和关闭日期的值。我得到了重复对象的类似哈希代码。当等同于这些对象时,我得到了布尔值“假”。在我的理解中,对象==对象比较对象的引用,即使引用是相同的;代码返回假。你能帮我理解是什么问题吗?我在下面发布了我的代码: Main.java 输出: 检查客户对象引用:Customer@643 对象引用(位于Map中):[Customer@6
我理解A,我们在那里有一个原语;没有引用。by-复制。 我希望B和C的行为与D相同——根据它们被给予的引用而改变。 为什么这个对象引用另一个对象只对用户定义的对象“起作用”,而不是整数、字符串等。?
问题内容: 我希望能够使LinkedList.contains()对于自定义比较器返回true。 假设我有1个LinkedList和2个对象 从技术上讲,两个对象在比较方面是相同的(MyObject实现Comparable) (a == b)==真 但是,当我执行以下操作时,myList对于myList.contains(b)不会返回true 我认为它是因为contains将检查对象引用,并看到a