java HashMap操作对象

来源:互联网 发布:js删除文件夹中的图片 编辑:程序博客网 时间:2024/06/05 10:59

首先创建一个Person类,实现equals,hashCode和compareTo方法

public class Person implements Comparable<Person> {    private String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public Person(String name, int age) {        this.name = name;        this.age = age;    }    public boolean equals(Object obj) {        if (!(obj instanceof Person))            throw new ClassCastException("类型不匹配");        Person p = (Person) obj;        return this.name.equals(p.name) && this.age == p.age;    }    public int hashCode() {        return name.hashCode() + age;    }    /**     * positive integer greater than     * 0 equal     * negative integer less than     *     * @param person     * @return     */    public int compareTo(Person person) {        int num = new Integer(this.age).compareTo(new Integer(person.age));        // 年龄相同再比较姓名        if (num == 0)            return this.name.compareTo(person.name);        return num;    }}
import java.util.HashSet;import java.util.Iterator;/** * 使用HashSet集合实现添加对象(不重复) * HashSet底层是使用了HashCode和equals方法比较是否相等 * 如果hashcode值不同,不会调用equals * Created by Administrator on 2017/2/26 0026. */public class HashSetPerson {    public static void main(String[]args){        HashSet<Person> hashSet = new HashSet<Person>();        hashSet.add(new Person("a1",20));        hashSet.add(new Person("a2",22));        hashSet.add(new Person("a3",24));        hashSet.add(new Person("a4",18));        hashSet.add(new Person("a2",22));        for (Iterator it = hashSet.iterator();it.hasNext();){           Object obj = it.next();            Person p = (Person)obj;            System.out.println("name:"+p.getName()+"\tage:"+p.getAge());        }    }}

运行结果

name:a1 age:20name:a4 age:18name:a2 age:22name:a3 age:24
0 0