HashSet集合用法

来源:互联网 发布:百度数据开放平台 编辑:程序博客网 时间:2024/05/21 10:46

|–Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。、
|–HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
HashSet是如何保证元素唯一性的呢?
是通过元素的两个方法,hashCode和equals来完成。
如果元素的HashCode值相同,才会判断equals是否为true。
如果元素的hashcode值不同,不会调用equals。

        注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。|--TreeSet:

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

import java.util.*;class HashSetDemo {    public static void sop(Object obj)    {        System.out.println(obj);    }    public static void main(String[] args)     {        HashSet hs = new HashSet();        sop(hs.add("java01"));        sop(hs.add("java01"));        hs.add("java02");        hs.add("java03");        hs.add("java03");        hs.add("java04");        Iterator it = hs.iterator();        while(it.hasNext())        {            sop(it.next());        }    }}

往hashSet集合中存入自定对象
姓名和年龄相同为同一个人,重复元素。

import java.util.*;class HashSetTest {    public static void sop(Object obj)    {        System.out.println(obj);    }    public static void main(String[] args)     {        HashSet hs = new HashSet();        hs.add(new Person("a1",11));        hs.add(new Person("a2",12));        hs.add(new Person("a3",13));//      hs.add(new Person("a2",12));//      hs.add(new Person("a4",14));        //sop("a1:"+hs.contains(new Person("a2",12)));//      hs.remove(new Person("a4",13));        Iterator it = hs.iterator();        while(it.hasNext())        {            Person p = (Person)it.next();            sop(p.getName()+"::"+p.getAge());        }    }}class Person{    private String name;    private int age;    Person(String name,int age)    {        this.name = name;        this.age = age;    }    public int hashCode()    {        System.out.println(this.name+"....hashCode");        return name.hashCode()+age*37;    }    public 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;    }    public String getName()    {        return name;    }    public int getAge()    {        return age;    }}
0 0
原创粉丝点击