ArrayList和HashSet对的比较及HasCode分析
来源:互联网 发布:淘宝的卖家中心不见了 编辑:程序博客网 时间:2024/05/18 12:04
实例代码:
ReflectPoint.java文件代码:
package cn.yzx.day1;public class ReflectPoint { private int x; public int y; public String str1 = "ball"; public String str2 = "basketball"; public String str3 = "itcast"; public ReflectPoint(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; ReflectPoint other = (ReflectPoint) obj; if (x != other.x) return false; if (y != other.y) return false; return true; } @Override public String toString() { return str1 + ":" + str2 + ":" + str3; }}
ReflectTest2.java文件代码:
package cn.yzx.day1;import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;public class ReflectTest2 { public static void main(String[] args) { // TODO Auto-generated method stub Collection collections = new ArrayList(); 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); Collection collections1 = new HashSet(); collections1.add(pt1); collections1.add(pt2); collections1.add(pt3); collections1.add(pt1); //下面两行代码不注释结果为1,只是后结果为2 System.out.println(collections.size()); System.out.println(collections1.size()); //从打印可以看出ArrayList在内存中存放时不考虑对象是否相同, //但用HashSet就会考虑对象是否相同,当实现了hashCode(在ReflectPoint类中,当然重载了hashCode也要重载equals)方法时, //那么不同对象相同的元素的值相同也只存储一次。从上面注释的两行代码可以看出,当用HashSet集合存储后不应该修改元素的值,要不然指向的 //对象就会丢失,就会造成内存泄露 }}
运行结果:
从打印可以看出ArrayList在内存中存放时不考虑对象是否相同,但用HashSet就会考虑对象是否相同,当实现了hashCode(在ReflectPoint类中,当然重载了hashCode也要重载equals)方法时,那么不同对象相同的元素的值相同也只存储一次。从上面注释的两行代码可以看出,当用HashSet集合存储后不应该修改元素的值,要不然指向的对象就会丢失,就会造成内存泄露。
0 0
- ArrayList和HashSet对的比较及HasCode分析
- ArrayList、HashSet的比较及Hashcode分析
- ArrayList、HashSet的比较及Hashcode分析
- arrayList hashset的比较及hashcode分析
- 8.7 ArrayList_HasSet 的比较及Hascode分析 和内存泄露
- ArrayList HashSet的比较,以及HashSet分析
- ArrayList与HashSet比较及HashCode分析
- 黑马程序员---ArrayList和HashSet的比较、hashCode的分析
- ArrayList和HashSet比较
- ArrayList,HashSet的比较
- 黑马程序员-ArrayList、HashSet比较和HashCode分析
- java学习之ArrayList和HashSet的比较以及HashCode分析
- ArrayList与HashSet的比较,以及HashCode分析, 内存泄露
- arrayList 和hashSet的区别
- hashSet 和arrayList的区别
- ArrayList 和 HashTable 和 HashSet 和 List 和 Dictionary 之间关于插入查询的时间比较
- java基础巩固系列(五):ArrayList与HashSet的比较,以及HashCode分析
- 黑马java学习笔记_ArrayList 和HashSet的比较及HashCode分析和Java中内存泄漏的探讨
- 递归算法案例分析
- 1051: C语言程序设计教程(第三版)课后习题11.5
- Android 中在一个程序中启动另一程序
- 【数学相关、规律】Vijos P1582 笨笨的L阵游戏
- 针对《SVM八股简介》的总结
- ArrayList和HashSet对的比较及HasCode分析
- Swift系统自带二维码的扫描使用
- 周线金叉
- 1017-R
- c++第二次实验--类和对象1
- redhat下qt的安装
- swift 数组转字符串(joinWithSeparator)
- 活动选择
- maven错误事例之一