HashSet

来源:互联网 发布:python sha256 编辑:程序博客网 时间:2024/05/21 17:36
/* *HashSet:此处简单实现了用HashSet集合存储自定义对象的实例。存入哈希结构集合的元素,一定要重写hashCode方法和equals方法。 * *HashSet集合的增、删、查动作动会使用到,所操作对象的hashCode方法和equals方法。 */package classfile;import java.util.*;public class HashSetDemo{public static void main(String[] args){HashSet<Student> hs = new HashSet<Student>();hs.add(new Student("张三",20));hs.add(new Student("李四",22));hs.add(new Student("王五",23));hs.add(new Student("张三",20));//此处为重复元素for(Iterator<Student> iterator = hs.iterator();iterator.hasNext();){Student s = iterator.next();System.out.println("HashSet集合中的元素:"+s.getName()+"..."+s.getAge());}}}/** *一个简单的学生类。 */class Student{private String name;private int age;/** *创建一个学生对象。 * *param name *指定学生的姓名 *param age *指定学生的年龄 */public Student(String name,int age){this.name = name;this.age = age;}/** *用于获取学生的姓名。 * *return *返回当前学生的姓名。 */public String getName(){return name;}/** *用于获取学生的姓名。 * *return *返回当前学生的年龄。 */public int getAge(){return age;}/** *重写了父类的hashCode方法,使用name和age两个字段计算本对象的哈希值。 * *return *返回本对象的特定的哈希值。 */public int hashCode(){System.out.println(name+"...hashCode");//由于查看此方法的被调用行为return name.hashCode()+age*36;//*36为的是减小不同Student对象hashCode相同的几率}/** *重写了父类的equals方法,使用name和age两个字段判断两个对象的相等性。 * *return *返回两个对象的比较结果。 */public boolean equals(Object obj){if(!(obj instanceof Student)){return false;}Student s = (Student)obj;System.out.println(this.name+"...equals..."+s.name);//用于查看此方法的被调用行为return this.name.equals(s.name) && this.age==s.age;}}

0 0
原创粉丝点击