- 浏览: 96629 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jameswolf:
补肾啊!冬天多喝,但是补只是后招,别漏才是真理,呵呵
朋友告诉我的神粥秘方 -
wa327114652:
很想学习,但能再详细点吗?
for java beginner 5-2 - 自己实现枚举-下 -
superlittlefish:
不错,简单易懂.一直在看你的blog,感觉反射写的挺好的.让我 ...
for java beginner 15 下java反射在框架里的应用 读取properties文件
java 反射 数组的反射(上)其实是讲ArrayList HashSet HashCode
ArrayList HashSet HashCode
--------------------
--------------------------------
-------------------------关于测试,下一篇再说一下吧
ArrayList HashSet HashCode
--------------------
package com.ncs; public class Point { private int x; public int y; public String s1 ="ball"; public String s2="hubin"; public String s3="zhangxiaoxiang"; //做实验而已,字段不可能是 public 的 public Point(int x, int y) { super(); 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; } }
--------------------------------
package com.ncs; import java.util.Collection; import java.util.HashSet; public class ReflectInCollection { public static void main(String[] args) { //Collection collection = new ArrayList(); Collection collection = new HashSet(); Point p1 = new Point(3,3); Point p2 = new Point(5,5); Point p3 = new Point(3,3); //看看和 p1有什么不一样 collection.add(p1); collection.add(p2); collection.add(p3); collection.add(p1); System.out.println(collection.size()); //4 //如果 ArrayList() 换成 HashSet() //3 //ArrayList类似数组,有顺序 你放进去 哪怕是同一个对象,放十次 //★就有十个格子新出来,只不过那十个格子存放的地址都一样,[因为刚刚说的是同一个对象嘛] //所以ArrayList还可以插队,你插哪里你定好了 //HashSet()放东西前要 判断 里面是不是已经有了,有了不放, 不是覆盖★ //刚刚测试说明了 ,p1 和 p3 不是一个,如果你希望相同,就要自己写 eques方法 //★默认的eques方法通常是比较 hashcode ,hashcode是根据内存值算出来的 //现在回去修改 Point 类的两个方法 equals hashcode //IDE有专门的 菜单的,看看好了 //自动生成 ,非常不错 //现在 HashSet() 变2了 认为 p1 == p3 //如果把public int hashCode() 去了,又变3了 //就是说 HashSet() 根据 hashCode() 方法判断两个对象是不是一样的 //hash这东西,有点难度的 //就比如说你不想存一样的东西到集合里吧, //这个集合你怎么实现???一个一个判断????假如这个集合有上千亿条记录呢?? //假如你想放进去的记录是条新的,那是不是说你要比较千亿次后才可以放进去呢?? //有高手发明 一种哈稀 算法,把集合分若干 存储 区域 ,每个区域 存放 的对象匹配那个 //对象算出的Hash值, //说白了就是你这个对象 算出来的 那个HASH码 只可以存到 特定的某段 区域里 //我找的时候也好找了 //再说白一点,每个object都可以算出 哈稀 值 , //当把这个对象 存到 具有HASH功能的集合的时候,★[存ArrayList之类的不管了] //不是随便就可以存的,规定你只可以存特定某段内存 //要比较是不是一样,先到那一段内存 ,然后一个一个判断equals, //有趣的是,我这段 没有 equals,其他段有的,JVM还是认为你没有,它只认那一段 //可见 hashset集合有很好的对象 检索功能,但是存储对象的效率会低一些, //因为先要算你这个对象改放 哪段 内存呢! //同一个对象在程序运行期间任何时候返回的 哈稀值 是始终不变的 //所以 即使两个对象的equals方法比较结果一样,他们默认的 //hashcode方法返回的值也是不一样的 //所以有一说法,你让两个对象的equals一样了,就也把 hashcode弄一样吧 //其实,如果你确定不会把对象放 hash功能的集合里,大可不管 hashcode //一般来说 //只有类的实例对象要被采用哈稀算法进行存储和检索时,这个类才需要按照 //要求覆盖hashCode()方法,即使程序可能暂时不会用到当前类的 //hashCode()方法,但是为它提供一个hashcode()方法也没有什么不好 //所以通常这两个方法会同时覆盖,IDE也设计了这样的菜单 //通常,一个类的两个实例用equals比较一样时,他们的hashcode也必须一样 //但是反之就不一定了,"BB" "Aa"的equals肯定不一样,但是 //hashcode()返回的就是一样的 //★★最后,当一个对象存储进hash集合后,不要去修改这个对象里参与计算 //哈稀值的字段,要不然contains方法都检索不到了,到时候内存益出了.. } }
-------------------------关于测试,下一篇再说一下吧
发表评论
-
pull解析器通用解析XML与生成XML
2013-02-23 14:52 0pull解析器,简单易用,android都在用,肯定有他的优 ... -
java decompiler - a tool to view jar file
2012-02-15 22:26 1018有时候还是很需要看看人家JAR包里写的什么乱七八糟的东西,这东 ... -
JAVA工作
2011-07-20 21:11 729################## Applet ... -
helios-use-subversion-behind-proxy
2011-04-04 16:30 767download the eclipse helios in ... -
IBM发布时间不足解决方法
2011-02-17 19:16 762D:\IBM\SDP\runtimes\base_v61\p ... -
log4j简单例子
2010-10-03 18:27 863简单点说, 写程序时,有时懒得debug,就直接Sy ... -
java 泛型-1-使用而已
2009-12-01 23:39 1119023-java1.5泛型-1 懒人想的 把检查代码的工作交 ... -
java 1.5 annotation-3 设值让反射拿
2009-12-01 20:39 1576java 1.5 annotation 的use 前面的什么 ... -
java 1.5 annotation-2
2009-11-30 23:28 1184java 1.5 注解-2[非常重要 比每举重要] 刚刚只是 ... -
java 1.5 annotation-1
2009-11-30 21:07 1304java 1.5 注解[非常重要 比每举重要] 1.5后的新 ... -
for java beginner-19 beanutils包
2009-11-29 22:20 752019-使用BeanUtils工具包操 ... -
for java beginner-18 JAVABEAN规范-1
2009-11-29 21:12 1030018-JAVABEAN规范-1 IntroSpec ... -
for java beginner 17 配置文件的知识
2009-11-29 19:29 780017 配置文件的知识 刚刚已经说到 配置文件,我说放 工程 ... -
for java beginner 15 下java反射在框架里的应用 读取properties文件
2009-11-29 17:44 1386java 框架基础 ------------------- ... -
for java beginner 14 ArrayList HashSet HashCode(中)
2009-11-29 13:24 1138java 反射 数组的反射 ArrayList HashSe ... -
for java beginner12数组的反射的应用
2009-11-29 10:04 1024java 反射 数组的反射 数组也是一种类型,当然可以反射 ... -
for java beginner11 java 反射 Method类
2009-11-29 08:30 1286java 反射 Method类 str1.charAt() ... -
for java beginner10 java 反射 Field类
2009-11-29 07:17 3542java 反射 Field类 -------用到一个bea ... -
for java beginner 9 java反射的概念和Constructor 类
2009-11-29 07:13 1390java 反射 的概念 和 Constructor 类 反 ... -
for java beginner 8 java 反射的基础基础Class的理解
2009-11-29 07:09 1030java 反射 的基础基础 Class的理解 反射 在 1 ...
相关推荐
introduce in english
2. Java初学者指南:《JAVA A beginner's guide sixth edition》是一本专门为Java初学者编写的入门教材。该书全面介绍了Java的基础知识,适合那些没有编程经验的读者。 3. 作者Herbert Schildt:Herbert Schildt是...
Fully updated to cover Java Platform, Standard Edition 7 (Java SE 7), Java: A Beginner's Guide, Fifth Edition starts with the basics, such as how to compile and run a Java program, and then discusses...
This book is for anyone who wants to learn computer programming and knows absolutely nothing about it. If you are wondering whether this book is going to teach you how to create amazing applets or ...
综上所述,《Java A Beginner’s Guide》第六版是一本针对初学者的全面且权威的Java编程指南,作者赫伯特·席尔德特结合自己在编程语言领域的深厚知识和广泛经验,为读者提供了一个理解Java语言的框架,同时由Java...
Java A Beginner's Guide(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系...
6. **集合框架**:学习ArrayList、LinkedList、HashSet、HashMap等集合类的使用,以及泛型的概念。 7. **多线程**:理解并发编程的基本原理,创建和管理线程,同步机制如synchronized关键字和wait()、notify()方法...
Pentaho 8 Reporting for Java Developers 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
8. **数组与集合框架**:数组用于存储同类型的多个数据,而集合框架(如ArrayList, LinkedList, HashSet等)提供了更灵活的数据结构。理解它们的使用场景和操作方法能提升代码的效率。 9. **异常处理**:Java通过...
### Java 7 初学者教程知识点总结 #### 一、简介 - **书籍基本信息:** - **书名**:《Java 7 初学者教程》第三版 - **作者**:Budi Kurniawan - **出版年份**:2011 年 10 月 - **ISBN**:978-0-9808396-1-6 ...
容器和集合框架是Java的重要组成部分,读者将学习ArrayList、LinkedList、HashSet、HashMap等常用集合类的使用。同时,书中还会涉及多线程编程,如何创建和管理线程,以及同步机制,如synchronized关键字和wait()、...
5. **集合框架**:Java集合框架包括ArrayList、LinkedList、HashSet、HashMap等,它们为存储和操作对象提供了便利的数据结构。了解这些类的特性和使用方法是进阶Java编程的关键。 6. **IO流**:Java的输入/输出(IO...
Learn to design and create video games using the Java programming language and the LibGDX software library. Working through the examples in this book, you will create 12 game prototypes in a variety ...
### Java - Java A Beginner's Guide 9th edition #### Java基础知识概述 本书旨在为初学者提供全面、深入的Java编程入门指导。Java是一种广泛使用的面向对象编程语言,它以其跨平台性、安全性以及丰富的类库支持...
Java A Beginner’s Guide(7th) 英文epub 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner's Guide(6th) 英文epub 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner’s Guide(7th) 英文azw3 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner's Guide(6th) 英文mobi 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除