您的位置:首页 > 其它

HashSet

2015-01-11 11:53 99 查看
/*
Set:元素是无序的(存入和取出顺序不一定一直。),元素不可以重复
Set集合功能和Collection是一致的。哈希表按照哈希值存储。
如果两个哈希值相同,但是不是同一个对象,则依次在第一个内存下顺延。
子类:
---HashSet:底层数据结构式哈希表。数据先调用自己的hashCode方法,然后判断equals
注意ArrayList判断元素是否存在和删除相同,依赖equals方法
HashSet先依赖hashCode,后依赖equals*/import java.util.*;class Person{String name;int age;Person(String name,int age){this.name = name;this.age = age;}public String getName(){return this.name;}public int getAge(){return this.age;}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 int hashCode(){System.out.println(this.name + ".....hashCode()");return this.name.hashCode()+age;}}class  TestDemo{public static void main(String[] args){HashSet hs = new HashSet();hs.add("java1");hs.add("java1");hs.add("java2");hs.add("java3");System.out.println(hs);/*结果【java1,java2,java3】,原因:由于不能有重复,所以添加第二个java1的时候返回false,没成功*/System.out.println(hs.size());//retainAll(Collection al),保留与al中相同的元素。//添加自定义对象HashSet hsPerson = new HashSet();hsPerson.add(new Person("al1",11));hsPerson.add(new Person("al2",12));hsPerson.add(new Person("al3",13));hsPerson.add(new Person("al4",14));hsPerson.add(new Person("al4",14));Iterator it =hsPerson.iterator();while(it.hasNext()){Person p = (Person)it.next();System.out.println(p.getName() + "..." + p.getAge());}}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: