A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 明天,你好 中级黑马   /  2013-5-16 21:30  /  1647 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 明天,你好 于 2013-5-17 22:07 编辑

Hashset、HashMap、LinkedHashMap感觉好像都差不多,具体的都是在什么时候使用,求解答

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

3 个回复

正序浏览
黄玉昆 发表于 2013-5-16 22:23
HashSet是Set集合下的一个子类,其底层的数据结构式哈希表,哈希表存的都是每个元素的哈希值,是通过hashCo ...

谢谢你~
回复 使用道具 举报
HashSet是Set集合下的一个子类,其底层的数据结构式哈希表,哈希表存的都是每个元素的哈希值,是通过hashCode()方法算出来的,它是单列集合,就是只能存一个元素(具体说是元素的地址)。
HashMap是Map集合下的一个子类,其底层数据结构也是哈希表,它是双列集合,存的是键值对,也就是说存在映射关系的才能存入到Map集合之中。比如说地图上的一个点和实际地方的映射。
LinkedHashMap是HashMap的一个子类,这个类和前两个类的不同之处在于:前两个类是无需的,而这个类是有序的,因为是链表结构,增删速度是比较快的,但是查询速度比较慢。
需要说明的一点是:Set集合的底层就是使用的Map集合,这个你可以通过几点看出来:
1、可通过Map集合的entrySet()和keySet()这两个方法看出来,因为这是Map和Set的转换的一种方式。
2、通过Eclpse的断点的方式查看,你会发现,你使用Set的时候,他的源代码之中是存在Map集合的使用的。
3、查看源代码,源代码里有大量的信息,你通过看源代码,你就知道了各类之间是如何运行的。

建议:
看视频的时候多做总结,不懂的可以先自己用代码测试,如果测试不出来,就看看API或者源代码。
实在不会的话,就发帖,这样的过程,你会收获很多。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1 赞一个!

查看全部评分

回复 使用道具 举报
set就和数学中的集合差不多,你想想集合的三要素。
Map在存储时要存储键-值对,而且键不能重复。
LinkedList就是链表,它是读的时候慢,但是删除的时候快。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马