这个地方就需要判断需要使用什么样的集合来判断其元素的唯一性了. 比如 HashSet的判断唯一性是利用
(1)复写hashCode():利用成员中String自带的hashCode()来添加hashcode的条件,这样就将int成员条件加进去再判断两个元素是否相等.减少了相同hashcode之间的判断次数.为了尽量保证哈希值的唯一性,可以将int成员增加条件判断;String.hashCode()+int*一个数字. 这种形式来判断元素的hashCode的唯一性.
(2)复写equals():元素的HashCode值相同,才会判断equals是否为true. 所以要再进行一次元素中equals的对比,这里一般会判断该元素中的成员的私有属性是否相等,来进一步判断元素是否唯一. 记住! 该equals方法的继承Object中的, 所以传入之后是以多态的形式存在的. 所以:第一步先判断该对象的类型是否是要判断的对象(传入的对象instanceof(对象)) 如果不是抛出异常, 如果是的话 , 将这个传入的对象进行向下转型, 再进行该对象中的特有属性比较.
这样来判断对象的唯一性.
对于数据结构不同,所依赖的判断方法也是不同的. ArrayList依赖的是equals, HashSet先依赖hashcode然后equals.
之前总结的... ^^ 希望对您有所帮助.
|