set.contains不使用覆盖的equals()方法的原因是为了提高性能和效率。
在Java中,Set是一种不允许重复元素的集合,它的实现类通常是HashSet或TreeSet。当我们调用Set的contains方法时,它会根据元素的hashCode值来确定元素的存储位置,然后再使用equals方法来判断元素是否相等。
如果Set在判断元素是否相等时直接使用equals方法,那么对于包含大量元素的Set来说,每次调用contains方法都需要遍历整个集合,逐个比较元素的值,这样的效率非常低下。
而如果Set在判断元素是否相等时使用覆盖的equals方法,那么每次调用contains方法时,都需要调用equals方法来比较元素的值,这样会增加额外的开销。
为了提高性能,Set在判断元素是否相等时通常会先根据元素的hashCode值来确定元素的存储位置,然后再使用equals方法来判断元素是否相等。这样可以大大减少比较的次数,提高查找元素的效率。
总结起来,Set.contains不使用覆盖的equals方法是为了提高性能和效率,通过先根据hashCode值确定元素的存储位置,再使用equals方法判断元素是否相等,来减少比较的次数。
领取专属 10元无门槛券
手把手带您无忧上云