首页 > 编程语言 > 详细

java HashSet

时间:2020-04-05 23:10:22      阅读:82      评论:0      收藏:0      [点我收藏+]

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()。

java HashSet

原文:https://www.cnblogs.com/hongxiao2020/p/12639635.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!