黑马程序员技术交流社区
标题:
集合框架map集合中keySet()方法的疑问!
[打印本页]
作者:
昝文萌
时间:
2013-8-28 16:59
标题:
集合框架map集合中keySet()方法的疑问!
本帖最后由 昝文萌 于 2013-8-29 08:43 编辑
map集合中定义的keySet方法是Set<K> keySet(),它的返回值应该是一个Set接口类型的子类对象,但是通过查阅API,发现实现Set接口的类他们在底层的实现方式都不一样,比如TreeSet是基于二叉树的结构,HashSet是基于哈希表的结构,那这个返回的Set接口类型的子类对象是通过什么结构实现的!求大神!
作者:
白磊
时间:
2013-8-28 17:17
对于你的疑问 ,应该是这样的:
map本来就是一个 存放 键值对 的集合,你通过 keySet()方法得到map的set集合,至于这个返回的这个set集合是通过什么结构实现的,这个就要看这个map到底是怎样的map了,如果map是HashMap,那么返回的set集合就是HashSet了,如果这个map是TreeMap的话,那么返回的set集合就是TreeSet了。
作者:
iBadboy
时间:
2013-8-28 18:28
记得视频里老师似乎说过,Set底层就是使用了Map集合,keyset应该是跟map的结构一样吧。。。
作者:
肥猫
时间:
2013-8-28 19:44
Set集合下的实现类,只是底层结构不一样,看源玛就知道了,几乎全都是直接调用MAP集合来实现的,连方法都是这样的。
作者:
328078121
时间:
2013-8-28 23:46
看来楼主并未仔细看视频噢,set集合很多方法是调用map中的方法,所以不同的map底层结构,返回不同类型set集合。就像是2个数相加的方法,其实调用的是3个数相加的方法,第三个数赋个0。这个情况在java中很普遍,复杂的都搞出来了,简单的调用复杂的不就OK了~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2