我正在尝试为我的简单类生成hashCode()方法,但是我什么也没用。我将不胜感激任何帮助。我已经实现了equals()方法,该方法如下所示,并且还想知道是否需要实现compareTo()方法。我已经导入了java.lang.Character以使用character.hashCode(),但它似乎不起作用。
private class Coord{
private char row;
private char col;
public Coord(char x, char y){
row = x;
col = y;
}
public Coord(){};
public char getX(){
return row;
}
public char getY(){
return col;
}
public boolean equals(Object copy){
if(copy == null){
throw new NullPointerException("Object entered is empty");
}
else if(copy.getClass()!=this.getClass()){
throw new IllegalArgumentException("Object entered is not Coord");
}
else{
Coord copy2 = (Coord)copy;
if(copy2.row==this.row && copy2.col==this.col)
return true;
else
return false;
}
}
}
提前致谢…
正在给我java.lang.Comparable转换错误的comparTo()方法。
public int compareTo(Object copy){
if(copy==null){
throw new NullPointerException("Object entered is empty");
}
else if(copy.getClass()!=this.getClass()){
throw new IllegalArgumentException("Object entered is not Coord");
}
else{
Coord copy2 = (Coord)copy;
if(copy2.row==this.row && copy2.col==this.col){
return 0;
}
else if(copy2.col < this.col){
return -1;
}
else{
return 1;
}
}
}
谢谢…
要实现hashCode,您可以覆盖Object的默认实现:
@Override
public int hashCode()
{
return row ^ col;
}
这实际上不是理想的哈希,因为它的结果非常可预测,并且两个不同的Coord
对象很容易返回相同的值。更好的哈希将利用(http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html)中的内置Arrays
类:java.util
@Override
public int hashCode()
{
return Arrays.hashCode(new Object[]{new Character(row), new Character(col)});
}
您可以使用此方法生成具有任意多个字段的很好的哈希。
要实现compareTo,您将希望您的类实现Comparable:
public class Coord implements Comparable<Coord>
完成此操作后,您可以使compareTo接受type Coord
而不是type 的参数Object
,这将省去检查其类型的麻烦。
如何为写在服务或控制器类中的方法中的日志语句编写JUnit测试用例。
问题内容: 您可以使用CSS条件语句包含针对IE,Mozilla,Chrome的特定CSS。 相应的“如果”是什么? 问题答案: 为了那个原因 您可以扫描用户代理并找出哪个浏览器及其版本。包括适用于特定于操作系统样式的操作系统 您可以为特定的浏览器使用各种CSS技巧 或脚本或插件来识别浏览器并将各种类应用于元素 使用PHP 然后根据检测到的浏览器创建动态CSS文件 这是CSS骇客清单
我没有成功地从链表中删除特定项,方法是-public void removeFromList(string itemtoremove,LinkedList list)。 如何编写从链表中删除特定项的方法? 我的代码是:
本文向大家介绍hashCode 与 equals ?为什么重写equals时必须重写hashCode方法?相关面试题,主要包含被问及hashCode 与 equals ?为什么重写equals时必须重写hashCode方法?时的应答技巧和注意事项,需要的朋友参考一下 面试官可能会问你:“你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?” ha
我有这样的代码: 这段代码的目的是:如果是或的子类,则将推导为,否则推导为
一些背景知识,以防我为实际想要实现的目标解决了错误的问题:我的目标是编写一个函数: 它检查和是否具有相同的类型并相等,然后返回提供的(我们当时知道它与相同--T可能不是内射的,但它是一个函数!)或,否则。 我已经找到了一个解决办法,将违规的包装在中,使用,然后再次打开包装: 这种解决方法是完全可以接受的,但我希望去掉虚假的类型。