您的位置:首页 > 其它

hashCode方法作用 内存泄漏问题

2014-08-09 14:46 281 查看

hashCode方法和hashSet类

对象只有存在HashSet集合中才可以使用hashCode算法。

hashCode方法提高了从集合中存取元素的速度,由于set集合中的元素是不允许重复的。

在set中存取元素的过程:

1.首先调用hashCode()方法计算出元素的hashCode。

2.根据hashCode值找到其对应的存储区域。

3.取出该区域内的各个元素与之相比较,即调用对象的equals方法。

只有类的实例对象要被采用哈希算法进行存储和检索时,这个类才需要要求覆盖hashCode方法。即使程序可能暂时不会使用到该方法,但是通常都会覆盖hashCode方法和equals方法。

当一个对象被存储进hash集合以后,就不能再修改对象中参与计算hashCode的属性,否则将造成内存泄漏问题。表面上程序代码不断地增加对象,删除对象,但实际上内存中并未删除该对象,即使以后不使用了,还一直存在于内存中。

package cn.itcast.day;

import java.util.ArrayList;

import java.util.Collection;

import java.util.HashSet;

public class ReflectTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

//Collection collections =new ArrayList();//创建集合 4 有顺序的集合

Collection collections =new HashSet();// 比较里面有相同对象没有 有的话就不放

ReflectPoint pt1=new ReflectPoint(3,3);

ReflectPoint pt2=new ReflectPoint(5,5);

ReflectPoint pt3=new ReflectPoint(3,3);

collections.add(pt1);

collections.add(pt2);

collections.add(pt3);

collections.add(pt1);

pt1.y=7;

collections.remove(pt1);

System.out.println(collections.size());

}

本文参考于http://blog.sina.com.cn/s/blog_7b1cae8d0100r5rz.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: