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

关于HashCode对集合的影响之HashSet删除操作

时间:2014-08-14 20:58:19      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:hashcode hashset

package com.ArrayHashSet.a;

class Person {
	private String name;
	private int age;
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = 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;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	
}
public class Test {

	public static void main(String[] args) {

		Collection c = new HashSet();
		Person p = new Person("a",12);
		Person p2 = new Person("12",97);
		Person p3 = new Person("a",12);
		Person p4 = new Person("g",12);
		c.add(p4);
		c.add(p3);
		c.add(p2);
		c.add(p);
		//p2.setAge(2);//因为对p2的成员进行修改,导致hashcode被修改,在删除的时候                    //找不到要删除的对象
		c.remove(p2);
		for(Iterator it = c.iterator();it.hasNext();){
			System.out.println(it.next().toString());
		}
		
		
	}

}


关于HashCode对集合的影响之HashSet删除操作,布布扣,bubuko.com

关于HashCode对集合的影响之HashSet删除操作

标签:hashcode hashset

原文地址:http://zhudaoyan123.blog.51cto.com/8888071/1540049

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