arrayList hashset的比较及hashcode分析

来源:互联网 发布:网络即时通讯工具问卷 编辑:程序博客网 时间:2024/05/18 13:10

这段时间学习了一些java基础的知识,其中一些是我之前不知道的,记录下来希望自己好好体会。

集合按照引用的对象将其放进去的,按照顺序将其放进去,指的是位置的顺序。 ArrayList好理解,下面就重点谈谈对hashset的理解。

但是hashset不是,先判断是不是 有这个对象,如果存在,那么就不放了。

先看一个例子:



这种情况下输出一下集合中元素个数是2。

那么如果把自定义的hashcode方法去掉, 使用默认的hashcode方法结果是3。

问题:hashcode的作用是什么呢?


当面对大量数据进行查询时,如何快速找到要查询的数据呢?hash算法其实就是提供了一个类似分组的功能,然后在每个小组内进行查找。这样便提高了查询效率,其中hashcode就是对数据进行分组的依据。

所以这里有两个约定:

1、如果两个对象equals方法相等,那么hashcode方法也相等。

2、对于那些参与生成hashcode的对象遍历,如果存储到hashset中之后就不要再改变这些变量的值了,否则容易引起内存泄漏。


上面这个代码就报错了,因为在hashset中找不到跟pt1相等的变量。所以说在java中是存在内容泄漏的。

学习总结:

1、很多时候因为我们知识不足很难更深入得了解一个知识,这时候我们就需要善于站在巨人肩膀上进行学习。

2、对于未来,只有善于学习的人才能立于不败之地。学习能力是很重要的核心竞争力。


0 0
原创粉丝点击