java HashSet

2020-04-05 16:05:28来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

java HashSet

Set集合的功能和Collection是一致的。

HashSet:底层数据结构是哈希表,线程非同步。

HashSet保证元素唯一性:hashCode()和equals()

如果元素的hashCode值相同,才会判断equals是否为true。

如果元素的hashCode值不同,不会调用equals。

存人对象。同姓名同年龄,视为同一个人。

public class HashSetDemo {
    public static void main(String[] args) {
        HashSet hs = new HashSet();
        hs.add(new Person("a1",1));
        hs.add(new Person("a2",2));
        hs.add(new Person("a3",3));
        hs.add(new Person("a2",2));
        Iterator it = hs.iterator();
        while (it.hasNext()){
            Person p = (Person) it.next();
            System.out.println(p.getName()+"**"+p.getAge());
        }
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Person))
            return false;
        Person p = (Person) obj;
        return this.getName().equals(p.name) && this.getAge() == p.age;
    }

    @Override
    public int hashCode() {
        return name.hashCode()+age*39;
    }

    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;
    }
}

对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode()和equals()。


原文链接:https://www.cnblogs.com/hongxiao2020/p/12639635.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:面试官:ThreadLocal的应用场景和注意事项有哪些?

下一篇:jdk下httpserver源码解析