java 集合HashSet

来源:互联网 发布:苹果手机设置2g网络 编辑:程序博客网 时间:2024/06/09 16:08

关于HashSet的一点理解

附上代码 :

import java.util.HashSet;public class HashSetTest {    public static void main(String [] args){        HashSet<Person> people = new HashSet<>();        Person p1 = new Person("aaa","男",18);        Person p2 = new Person("bbb","女",18);        Person p3 = new Person("ccc","男",19);        Person p4 = new Person("aaa","女",19);        people.add(p1); people.add(p2);        people.add(p3); people.add(p4);        for (Person p : people){            System.out.print(p);        }        //System.out.println(people);    }    private static class Person{        private String name,sex;        private int age;        Person(String name,String sex,int age){            this.name = name;            this.sex = sex;            this.age = age;        }        @Override        public String toString() {            return "\n[ "+name+" , "+sex+" , "+age+" ]\n";        }        @Override        public boolean equals(Object obj) {            /** 为同一个对象时 **/            if (obj == this){                return true;            }            /** 类型相同时 ,进而根据自己的需要进行筛选**/            if (obj instanceof Person){                if (((Person) obj).name.equals(this.name)){                    return true;                }                return false;            }            return false;        }        @Override        public int hashCode() {            return this.name.hashCode();             //根据自己的需要生成Hash散列值        }    }}
这里的同一个对象指的是 对象内存地址相同 同一类型指的是 继承或实现的某个共同父类的对象Person p1 = new Person(...);Person p2 = new Person(...);Person p3 = p1;p3 指向 p1的内存块地址 所以他们是同一个对象p1 p2 都是Person对象 有各自的内存地址  所以 p1 p2 为同一类型但是不是同一个对象

都是个人的一些理解 慢慢学习

原创粉丝点击