黑马程序员技术交流社区

标题: 高手解答一下有关集合的疑惑 [打印本页]

作者: 明天,你好    时间: 2013-5-16 21:30
标题: 高手解答一下有关集合的疑惑
本帖最后由 明天,你好 于 2013-5-17 22:07 编辑

Hashset、HashMap、LinkedHashMap感觉好像都差不多,具体的都是在什么时候使用,求解答
作者: SOAR    时间: 2013-5-16 21:59
set就和数学中的集合差不多,你想想集合的三要素。
Map在存储时要存储键-值对,而且键不能重复。
LinkedList就是链表,它是读的时候慢,但是删除的时候快。
作者: 黄玉昆    时间: 2013-5-16 22:23
HashSet是Set集合下的一个子类,其底层的数据结构式哈希表,哈希表存的都是每个元素的哈希值,是通过hashCode()方法算出来的,它是单列集合,就是只能存一个元素(具体说是元素的地址)。
HashMap是Map集合下的一个子类,其底层数据结构也是哈希表,它是双列集合,存的是键值对,也就是说存在映射关系的才能存入到Map集合之中。比如说地图上的一个点和实际地方的映射。
LinkedHashMap是HashMap的一个子类,这个类和前两个类的不同之处在于:前两个类是无需的,而这个类是有序的,因为是链表结构,增删速度是比较快的,但是查询速度比较慢。
需要说明的一点是:Set集合的底层就是使用的Map集合,这个你可以通过几点看出来:
1、可通过Map集合的entrySet()和keySet()这两个方法看出来,因为这是Map和Set的转换的一种方式。
2、通过Eclpse的断点的方式查看,你会发现,你使用Set的时候,他的源代码之中是存在Map集合的使用的。
3、查看源代码,源代码里有大量的信息,你通过看源代码,你就知道了各类之间是如何运行的。

建议:
看视频的时候多做总结,不懂的可以先自己用代码测试,如果测试不出来,就看看API或者源代码。
实在不会的话,就发帖,这样的过程,你会收获很多。
作者: 明天,你好    时间: 2013-5-17 22:07
黄玉昆 发表于 2013-5-16 22:23
HashSet是Set集合下的一个子类,其底层的数据结构式哈希表,哈希表存的都是每个元素的哈希值,是通过hashCo ...

谢谢你~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2