线程不安全,存取速度快 (1)底层结构为哈希表结构,即区分元素时使用hash值。可以通过hashCode与equals方法的重写,保证元素唯一性。 (2)具体代码体现为:先判断哈希值是否相等,再判断equals方法是否返回true。true则为相同元素,存储元素失败,false则为不同元素,存储元素成功。 使用HashSet: a.存储自定义对象时,判断的是对象的hash值,如果hash值不同,再判断equals方法比较的结果,如果hash值相同,并且equals比较结果为true则为同一个对象。 b.hash值不等:直接判断两元素不同,加入到集合中。 c.hash值相等: equals方法返回结果为true,则两元素相同,不加入到集合中 equals方法返回结果为false,则两元素不相同,加入到集合中 d.如果想让某个类型的对象,根据内容判断是否是相同的对象,则需要将这个类型的hashCode方法与equals方法重写,按照自己的逻辑。 注意: 在add方法时,判断两元素是否相等,调用的方法是新加入对象的方法,将老对象依次作为参数传入这个方法中。
|