- 浏览: 251227 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
rdsgf:
也就是导出。。。如何把生成的图片导出到本地,有没有接口?
报表 charts4j -
rdsgf:
你好,请问生成的图片如何保存到本地?
报表 charts4j -
刘焕杰:
楼主,为啥放进去后,我下载的中文文件名还是乱码呢?
[jspSmartUpload]------------>jspSmartUpload上传中文文件名 乱码问题 -
814687491:
Ext Panel 动态 加载 html -
yxyysu:
下载之后使用了,没有解决上传时中文名字乱码问题,请博主指导。
[jspSmartUpload]------------>jspSmartUpload上传中文文件名 乱码问题
1.equals 的等价关系
2. 重新equals 的具体方法
3. 对应修改hashcode方法
具体的例子
2. 重新equals 的具体方法
3. 对应修改hashcode方法
具体的例子
/** * */ package com.study.effective; import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * * @className :EqualsTest * @package : com.study.effective * @Description :effective Java 中关于equals的介绍 * @author:lgf * @date :2012 一月 18 11:27:04 * @version : 1.0 */ public class EqualsTest { private int hashCode; private String strValue; private boolean booleanValue; private long longValue; private int intValue; private double doubleValue; private float floatValue; private String [] arr; private EqualsTest objField; public EqualsTest(){ } public EqualsTest(String strValue,int intValue){ this.strValue = strValue; this.intValue = intValue; } /** * 重写equals方法 * 对称,传递,一致 */ @Override public boolean equals(Object obj) { //1. 判断是否是本身对象的引用 if (this == obj) { return true; } //2. 判断是否就是本身对象的类型 if(!(obj instanceof EqualsTest)){ return false; } //3. 把参数转换成正确的类型,前面已经进行判断过了,所以肯定可以判断成功 EqualsTest temp = (EqualsTest)obj; //4. 根据每个关键参数进行判断是否相等 // 就是你自己的判断依据 // return (this.strValue == temp.strValue)&& // (this.booleanValue == temp.booleanValue)&& // (this.intValue == temp.intValue) && // (Double.compare(this.doubleValue, temp.doubleValue) == 0)&& // (Float.compare(this.floatValue, temp.floatValue) == 0) && // (Arrays.equals(this.arr, temp.arr))&& // ((this.objField == temp.objField) || (this.objField != null && this.objField.equals(temp.objField))) //4-1 基本数据类型(除了 double 和 float) 直接用 == 进行判断 if (this.strValue != temp.strValue) { return false; } if (this.booleanValue != temp.booleanValue) { return false; } if (this.longValue != temp.longValue) { return false; } if (this.intValue != temp.intValue) { return false; } //4-2double 类型数据可以通过Double.compare 进行判断 相等就== 0 if (Double.compare(this.doubleValue, temp.doubleValue) != 0) { return false; } //4-3float 类型数据可以通过Float.compare 进行判断 相等就== 0 if (Float.compare(this.floatValue, temp.floatValue) != 0) { return false; } //4-4 数组可以通过这个进行判断 if (!Arrays.equals(this.arr, temp.arr)) { return false; } //4-5 如果是对象则可以通过这个进行判断 if(!((this.objField == temp.objField) || (this.objField != null && this.objField.equals(temp.objField)))){ return false; } return true; } /** * 重写equals方法同时也要重写hashCode * 每个对象的散列码 */ @Override public int hashCode() { int result = hashCode; if (result == 0) { result = 1; result = 31 * result + this.intValue; // byte,char, short, int 计算 (int)value result = 31 * result + (this.booleanValue ? 1 : 0); // boolean 计算 (value ? 1 : 0) result = 31 * result + (int)(this.longValue^(this.longValue>>>32));// long 计算 (value ^ (value>>>32)) result = 31 * result + Float.floatToIntBits(this.floatValue); // float 计算 (value ? 1 : 0) result = 31 * result + (int)(Double.doubleToLongBits(this.doubleValue)^(Double.doubleToLongBits(this.doubleValue)>>>32));// 先转换成long 在转成int result = 31 * result + Arrays.hashCode(this.arr); // 数组hashcode获得 result = 31 * result + (this.objField == null ? 0 : this.objField.hashCode());// 对象的hashcode获得 hashCode = result; } return hashCode; } public static void main(String[] args) { EqualsTest e3 = new EqualsTest("e",0); EqualsTest e4 = new EqualsTest("e",0); //Map 把每个项相关的散列码缓存起来,如果散列码不匹配,就不必检查对象的相同性 Map<EqualsTest, String> map = new HashMap<EqualsTest, String>(); map.put(e3, "e3"); // 保存数据的时候就计算hashCode了 System.out.println(map.get(e4)); } }
- EqualsTest.zip (1.7 KB)
- 下载次数: 0
发表评论
-
List 遍历 ConcurrentModificationException
2013-07-05 17:39 1054有如下代码片段: public static void m ... -
foreach的原理
2013-07-05 14:49 820... -
java.util.Properties 简单用法
2013-04-25 10:05 16011. 认识properties文件 1、properties文 ... -
while 和 for 不完全相同
2013-03-07 11:05 7741. for和while的语法如下: for(initi ... -
(a + (a++)) 与 ((a++) + a)
2013-03-04 09:46 861直接上代码: public static void mai ... -
java 发送邮件错误收集
2012-10-31 19:00 8041. 报错: Exception in thread &qu ... -
Add Deployment java.lang.NullPointerException
2012-08-22 17:28 33441. 在用Myeclipse部署项目时候突然报错: 无法 ... -
Undefined exploded archive location
2012-08-22 17:14 9401. 用Myeclipse部署web系统wlms时候报如下错误 ... -
java @override 报错处理
2012-07-25 16:17 807有时候在自己电脑上编译通过的java代码,在别人那里却编译不通 ... -
java 环境变量配置
2012-07-25 10:01 927windows xp下配置JDK环境变量: 1.安 ... -
java 源码解析--LinkedList
2012-03-13 14:20 1153LinkedList 1.看源码前应该知道的知识点 ... -
java 源码解析--ArrayList
2012-03-13 09:51 1307ArrayList 1.看源码前应该知道的知识点 / ... -
java 三大特性--封装、继承和多态理解
2012-03-12 15:21 3753封装 /** * 所谓封装,就是将对象具有的成员变量和 ... -
java 关键字 clone
2012-02-24 17:24 8331. 最简单的clone例子 /** * */ ... -
java 基础之(接口)
2011-11-28 15:20 903“interface”(接口)关 ... -
java 基础之(抽象类)
2011-11-28 15:15 927抽象方法 :它属于一种不完整的方法, 只含有一个声明,没有方法 ... -
位移运算符
2011-11-04 11:46 931package com.lgf.operation; / ... -
java 关键字 final
2011-10-25 09:52 8621. final 数据 package com.lgf.k ... -
java 基础语法
2011-10-22 09:26 1077Java 基础语法 1.标识符 ... -
报表 charts4j
2011-10-18 09:32 30511. 简介 charts4j is a Java chart ...
相关推荐
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
举例分析 equals 和 hashcode 方法,hashcode应该怎么样生成 8个基本类型与基本对象的比较:byte与Byte shot与Short int与Integer long与Long float与Float double与Double char与Character
本文中详细的阐述了Java中经常遇到的equals、hashcode以及“==”号三者之间的区别
解析Java对象的equals()和hashCode()的使用
Java equals 方法与hashcode 方法的深入解析.rar
本文介绍了Java语言不直接支持关联数组,可以使用任何对象作为一个索引的数组,但在根Object类中使用 hashCode()方法明确表示期望广泛使用HashMap。理想情况下基于散列的容器提供有效插入和有效检索;直接在对象模式...
NULL 博文链接:https://zpointer.iteye.com/blog/1058337
主要介绍了Java重写equals及hashcode方法流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java容器集合(equals 和 hashCode+基础数据结构+ArrayList+Vector和LinkedList)
Java中的equals()和hashCode()契约Java开发Java经验技巧共3页.pdf.zip
如果一个类的hashCode()方法没有遵循上述要求,那么,当这个类的两个实例对象用equals()方法比较的结果相等时,他们本来应该无法被同时存储进set集合
1.概述 2.为什么重写equels方法要重写hashcode方法 3.例子
本篇文章详细介绍了Java中的equals和hashCode方法详解,Object 类是所有类的父类,非常具有实用价值,需要的朋友可以参考下。
主要介绍了探索Java中的equals()和hashCode()方法的相关资料,需要的朋友可以参考下
//使用Lombok帮助我们生成这些内容 getter setter 全参构造无参构造equals hashcode //Lombok 使用步骤 // 1 检查idea是否已经安装 Lombok // 2 检查是否勾选了 enable annotation processer // 3 导入 Lombok依赖 /...
java中hashcode和equals的详解.pdf
TEH 使用注解来实现 toString、equals 和 hashCode,并强制执行这 2 条规则 任何用于 hashCode 的属性都将用于 equals 和 toString 用于 equals 的任何属性都将用于 toString 注释是 @ToString @ToStringEquals ...
关于hashCode()和equals()的本质区别和联系.doc