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
相关文章推荐
- java中的hashcode方法作用以及内存泄漏问题
- Java集合HashSet的hashcode方法引起的内存泄漏问题
- Java集合HashSet的hashcode方法引起的内存泄漏问题
- [Lucene.Net] 内存泄漏问题解决方法 (转载)
- [Tips]OSG程序在MFC下报内存泄漏问题的解决方法
- 重写equals方法以及hashcode方法注意的问题
- 解决JSP路径问题的方法(jsp文件开头path, basePath作用)
- hashCode方法的作用
- 一种快速解决JAVA内存泄漏问题的方法
- hashCode方法的作用
- JavaScript 内部函数作用域问题及解决方法
- equal(),hashcode(),toString()方法的作用
- 解决JSP路径问题的方法(jsp文件开头path, basePath作用) 收藏
- 关于hashCode方法的作用
- hashCode和equals方法的问题
- equals函数,hashCode(),toString()的作用和实现方法
- Lucene.Net内存泄漏问题解决方法
- String类substring方法导致的Java内存泄漏问题
- GetTypeHashCode() 没有找到适合的方法来重写等问题
- 解决JSP路径问题的方法(jsp文件开头path, basePath作用)