- 浏览: 980024 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (223)
- JDBC技术 (29)
- Java Base (21)
- SSH框架的集合 (5)
- Javascript部分 (16)
- Sping2.5框架 (6)
- Hibernate框架 (19)
- JDBC中的数据库连接 (5)
- Ajax技术应用 (9)
- Java工具包下载 (3)
- Database (4)
- Java Web (13)
- 我的生活 (4)
- Struts2 (25)
- S2SH (1)
- Prototype (1)
- jfreeChart (5)
- JPA (7)
- JBPM (1)
- JasperReport (6)
- DWR (1)
- freeMark (2)
- IBatis (2)
- FCKeditor (2)
- POI (1)
- JQuery (6)
- JSON (1)
- JavaMail (3)
- Flex (2)
- CSS收藏夹 (1)
- 润乾报表 (2)
- 开源技术 (1)
- Android (2)
- Android_UI (1)
- Android_OS (6)
- Android_OpenLibs (3)
- Volley (1)
- JS_OpenLibs (1)
- Hessian (3)
- OS (1)
最新评论
-
damoluomu:
简单易懂
Java Web开发Session超时设置 -
di1984HIT:
学习了~~~~~~
Java Web开发Session超时设置 -
lord_is_layuping:
...
Java Web开发Session超时设置 -
15111285554:
...
Java Web开发Session超时设置 -
sfg1314:
暂停后重新下载就会报错:ClientAbortExceptio ...
Java Web 文件下载之断点续传
import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; /** * hashCode的作用 * * @author 张明学 * */ public class HashCodeStudy { @SuppressWarnings("unchecked") public static void main(String[] args) { Point p1 = new Point(3, 4); Point p2 = new Point(4, 7); Point p3 = new Point(3, 4); System.out.println(p1.equals(p3));// 重写equals前:false System.out.println(p1.equals(p3));// 重写equals后:true Collection collection1 = new ArrayList(); collection1.add(p1); collection1.add(p2); collection1.add(p3); collection1.add(p1); Collection collection2 = new HashSet(); collection2.add(p1); collection2.add(p2); collection2.add(p3); collection2.add(p1); // 无论是否为重复放,大小为4 System.out.println(collection1.size()); // 对于set若重复(两个p1重复)放则放不进去,大小为3 System.out.println(collection2.size()); // 若重写equest方法并且重写了hashCode方法即x与y的值相同则让它们的equest和hashCode相等, // 这两个对象equest相等并放在同一块内存中,即p1与p3重复只能放进去一个。 // **注意**:对于hashSet而言,并不是所有对象放在一块内存中,根据对象的hash值将它们的分到不同的内存块中 // 若没有重写hashCode方法,若p1与p3的hashCode值不在同一块内存中,这们虽然它们的equest相同但它们不一定 // 重复。(即p1与p3有可能能同放入hashSet中) // 一般情况我们会让两个对的equest方法相同时也会让它们的hashCode相同,就不会出现上述情况 System.out.println(collection2.size());// 这里我们让poin类的equest与hashCode相同,故大小为2(p1与p3重复) // 由于对于hash类的集合是根据对象的hash值然后计算再放入内存中,若将对象放入hash类的集合中后修改了对象参入了 // 计算hash值的属性值(如与x或y的值),即改变了对象的hash值则该对象有可能就删除不掉!!!因为hash值改变了 // 删除的时候根据后来的hash值计算出该对象在内存中所存放的内存块(有可能与放入之前不是同一块内存)找该对象, // 就找不到了,故也删除不掉。如下例: p2.x = 24;// 修改了x的值也改变了p2的hashCode值 collection2.remove(p2);// 删除p2 System.out.println(collection2.size());// 大小还是为2与上面的大小一样,没有删除掉!!! // 上面的情况也就引起了Java中的内存泄露!!! } }
public class Point { public int x; private int y; public Point(int x, int y) { this.x = x; this.y = y; } @Override public int hashCode() { final int PRIME = 31; int result = 1; result = PRIME * result + x; result = PRIME * result + y; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final Point other = (Point) obj; if (x != other.x) return false; if (y != other.y) return false; return true; } }
发表评论
-
HttpURLConnection附件上传
2015-05-15 18:25 3344整合了一个自己写的采用Http做附件上传的工具,分享一下! ... -
java自带线程池和队列详细讲解
2014-11-29 16:39 8449Java线程池使用说明 一简介 线程的使用在java中占 ... -
使用CGLIB的代理技术
2010-06-09 19:04 1482import java.lang.reflect.Method ... -
使用反射和注解模拟Spring的依赖注入
2010-06-09 19:00 4457作为一个应用Java的反射和注解的一个使用。 首简写一个XM ... -
Java基础十:JDK 动态代理类分析(java.lang.reflect.Proxy使用)
2010-05-28 19:25 4094/** * JDK 动态代理类分析(java.lang.r ... -
Java基础九:Java中的类加载器说明,可以对class文件加密,自定义ClassLoader
2010-05-28 19:22 3673/** * Java 类加载器 * * @aut ... -
Java基础八:泛型,?通配符
2010-05-28 19:17 6227/** * JDK1.5 泛型 * * @aut ... -
Java基础七:注解Annotation使用说明
2010-05-28 19:14 3967import java.lang.annotation.Ele ... -
Java基础六:apache的Beanutils简单使用对JavaBean操作的封装
2010-05-28 19:08 2122/** * apache的Beanutils简单使用 ... -
Java基础五:内省(对JavaBean的操作)
2010-05-28 19:05 2305/** * Person JavaBean * ... -
Java基础四: 反射(构造方法,成员变量,普通方法,数组)
2010-05-28 18:58 5721/** * 反射(构造方法,成员变量,普通方法,数组) ... -
Java基础三: 枚举高级应用(向枚举值对象中添加变量和方法)
2010-05-28 18:45 3790/** * JDK1.5 枚举高级应用(向枚举值对象中添加 ... -
Java基础一: 自动装箱,折箱、静态导入、可变参数
2010-05-28 18:24 1569自动装,折箱 /** * JDK1.5 自动装箱,折箱 ... -
apache StringUtils常见用法说明
2009-10-28 17:24 43751.空字符串检查使用函数: StringUtils.isBla ... -
产生随机字符串(a-z A-Z 0-9)
2009-09-25 17:47 3045实现方法一: public class RandomFile ... -
计算离当前日期之前或之后任意天的日期
2009-06-18 13:33 1463/** * 日期计算 * * @author z ... -
计算Java日期Date,DateFormat,GregorianCalendar的使用
2009-06-16 17:09 17913概要 不管你是处理财务交易还是计划着下一步的行动,你都要知 ... -
Java计算日期今天,昨天,上周,上月
2009-06-16 16:53 8374功能:今天,昨天,本周,上周,本月,上月 范围:以周一作为一 ... -
@SuppressWarnings(unchecked)作用解释.doc
2009-05-13 09:17 34566解释一: 屏蔽某些编译时的警告信息 ... -
JDK实现AOP动态代码
2009-04-20 14:29 62代理类: import java.lang.refle ...
相关推荐
本文介绍了Java语言不直接支持关联数组,可以使用任何对象作为一个索引的数组,但在根Object类中使用 hashCode()方法明确表示期望广泛使用HashMap。理想情况下基于散列的容器提供有效插入和有效检索;直接在对象模式...
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
java中Hashcode的作用
4)打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 3、编写程序练习Map集合的基本使用: 1)创建一个只能容纳String对象的...
实际上,hashcode根本不能代表object的内存地址。
在Java应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上equals比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需...
Java基础加强_ArrayList_HashSet的比较及Hashcode分析
主要介绍了Java 中HashCode作用以及hashcode对于一个对象的重要性,对java中hashcode的作用相关知识感兴趣的朋友一起学习吧
解析Java对象的equals()和hashCode()的使用
二、 Java语法基础 5 数据类型 5 运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 20 四、 面向对象★★★★★ 21 五、 封装(面向对象特征之一)★...
Java集合中有两类,一类是List,一类是Set他们之间的区别就在于List集合中的元素师有序的,且可以重复,而Set集合中元素是无序不可重复的。对于List好处理,但是对于Set而言我们要如何来保证元素不重复呢?通过迭代...
hashcode的作用.doc hashcode的作用.doc hashcode的作用.doc
1、何时需要重写equals() ... 如果x.equals(y)返回“false”,那么x和y的hashCode()有可能相等,也有可能不等。 简单的说,“相等的对象必须具有相等的散列码”。 3、什么是equals()与如何设计equals()
主要给大家介绍了关于Java中HashCode方法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
HashCode相同equals不同的2位字符集合算法 另附ASCII码表
本文中详细的阐述了Java中经常遇到的equals、hashcode以及“==”号三者之间的区别
Java容器集合(equals 和 hashCode+基础数据结构+ArrayList+Vector和LinkedList)
在讲解数组时(java提高篇(十八)——数组),我们提到数组是java中效率高的数据结构,但是“高”是有前提的。第一我们需要知道所查询数据的所在位置。第二:如果我们进行迭代查找时,数据量一定要小,对于大数据量...
记住:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。 一般情况下,如果自定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。 建立对象判断是否相同的依据。...