hashset是如何保持元素的唯一性呢?

来源:互联网 发布:mysql udf提权 编辑:程序博客网 时间:2024/04/28 04:23

hashset是如何保持元素的唯一性呢?

package com.Set;import java.util.HashSet;import java.util.Iterator;/** * hashset是如何保持元素的唯一性呢? * 是通过元素的hashcode和equals来表示: * 如果hashCode值一样,则比较equals是否为true * 如果hashCode值不一样,不用比较equals *//** * 往hashset集合中存入自定义对象 * 姓名和年龄相同为同一个人,重复对象 * @author 小明 * */class Person{private String name;private int age;Person(String name,int age){this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic boolean equals(Object obj) {if(!(obj instanceof Person)){return false;}Person p = (Person) obj;System.out.println(this.name+"-equals--"+p.name);return this.name.equals(p.name) && this.age==p.age;}@Overridepublic int hashCode() {System.out.println(this.name+"...hashcode...");//return 60;return name.hashCode()+age;}}public class HashSetTest {public static void main(String[] args) {HashSet<Person> hs = new HashSet<Person>();hs.add(new Person("a1", 20));hs.add(new Person("a2", 30));hs.add(new Person("a3", 40));hs.add(new Person("a3", 40));Iterator<Person> iterator = hs.iterator();while(iterator.hasNext()){Person p = iterator.next();System.out.println(p.getName()+"   "+p.getAge());}}}


0 0
原创粉丝点击