码迷,mamicode.com
首页 > 其他好文 > 详细

HashSet的特性介绍

时间:2014-09-15 17:29:59      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   ar   div   sp   log   on   

HashSet除了在元素的存储上是无序的以外,还是不能够存储重复的元素。

HashSet如何判断元素是否重复呢?是根据元素继承的两个方法来判断,hashCode和equals,当存储元素时,首先判断要存入的元素和已存在的元素的哈希值是否相同,若不相同存入,若相同则利用equals判断两个元素是否相同,若不相同,则存入,若相同则放弃。而hashCode和equlas是在存入元素自动调用的。

一下继续利用Person类举例

import java.util.*;

class Person

{

    private String name; //姓名

    private int age;    //年龄

 

    public Person(String name, int age)

    {

        this.name = name;

        this.age = age;

    }

    //用于生成自定义的哈希值

    public int hashCode()

    {

        return this.name.hashCode()+this.age*36;

    }

    //自己定义比较规则,与ArrayList相同

    public boolean equals(Object obj)

    {

        if(!(obj instanceof Person))

            return false;

        Person p = (Person)obj;

        return p.getName().equals(this.getName()) && (p.getAge() == this.getAge());

    }

    public String getName()

    {

        return this.name;

    }

 

    public int getAge()

    {

        return this.age;

    }

 

    public void setName(String name)

    {

        this.name = name;

    }

 

    public void setAge(int age)

    {

        this.age = age;

    }

}

 

public class Test

{

    public static void main(String[] args)

    {

        HashSet<Person> hs = new HashSet<>();

 

        hs.add(new Person("zhangsan", 23));

        hs.add(new Person("lisi", 23));

        hs.add(new Person("zhangsan", 23));

        hs.add(new Person("wangwu", 35));

        hs.add(new Person("zhangsan", 67));

        hs.add(new Person("zhaoliu", 45));

 

        Iterator<Person> it = hs.iterator();

 

        while(it.hasNext())

        {

            Person p = it.next();

            System.out.println(p.getName()+"...."+p.getAge());

        }

    }

}

 

HashSet的特性介绍

标签:style   blog   color   java   ar   div   sp   log   on   

原文地址:http://www.cnblogs.com/fantasy01/p/3973009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!