Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在特定情况下实现equals/hashcode以检查列表是否为子列表的子集_Java_Oop_Arraylist_Equals_Hashcode - Fatal编程技术网

Java 在特定情况下实现equals/hashcode以检查列表是否为子列表的子集

Java 在特定情况下实现equals/hashcode以检查列表是否为子列表的子集,java,oop,arraylist,equals,hashcode,Java,Oop,Arraylist,Equals,Hashcode,我知道我应该实现hashCode()和equals(),但实际上我不知道如何实现。我有以下课程: public class Dog { private Integer id; private Integer age; private Instant dateOfBirth; } 现在,我想检查一些狗的列表是否是另一个狗列表的子集 ArrayList<Dog> 但是,我不知道如何实现hashCode来维护equals hashCode契约?ID不够吗?如果ID对

我知道我应该实现
hashCode()
equals()
,但实际上我不知道如何实现。我有以下课程:

public class Dog {

   private Integer id;
   private Integer age;
   private Instant dateOfBirth;
}
现在,我想检查一些狗的列表是否是另一个狗列表的子集

ArrayList<Dog>

但是,我不知道如何实现
hashCode
来维护equals hashCode契约?

ID不够吗?如果ID对每只狗都是唯一且不可变的,您不需要年龄和出生日期(这里一只取决于另一只,所以如果ID不够,请使用Instant作为更高的保真度)@Tom.Reunick在您的equals方法中,您使用
==
来比较
Integer
实例。这仅适用于作为整数缓存一部分的值(-128到127)。旁注:除非您希望接受
null
,否则请使用
int
而不是
integer
。如果null是可接受的
,则.dateOfBirth.equals
可能会因NPE而崩溃。还不确定
==
是否适用于
Integer
。有趣的是,在确定一个列表是否是另一个列表的子列表时,将使用
hashCode
。这是怎么回事?你对这个算法有什么参考资料吗?
public boolean equals(Dog dog) {
  return (dog.id == this.id && dog.age == dog.age && &this.dateOfBirth.equals(dog.dateOfBirth));
}