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