一开始我以为,contains方法的比较是基于==的,也就是说,假设我有一个Set<String>,里面有一个"zzj"的String对象,如果我要判断"zzj"在不在这里面,实际上是做不到的,只能判断这个对象在不在这里面,但是后来无意中看到了他的规约,我发现他的等于是调用的equals方法(虽然对于Object,equals就是==),所以如果有如下代码——
实际上的输出是——
这个看似不经意的细节其实带来了很大的便捷,因为如果我们要设计一个ADT,且给出了自己设定的equals方法,那么对于此类contains方法的调用将会非常便捷,值得注意的是,此时还需要重写hashCode方法——
然后此时,equals方法就重写成了,只要A字段相同,我们就认为两个对象相同,现在我们在主程序里面运行这个——
可以看到结果是——
真的是很方便。