昨天又复习Java的集合类,相比之前的学习,又有了许多收获,虽然当时脑子里面没什么印象,但是后面回顾了一下总结了一下看着文档整理了一下,其实确实很多东西都感觉简单了很多。
进入正题,首先是要搞清Collection和Collections,Collection是List,set和Queue接口的父接口,而Collections是一个操作集合的工具类。
首先我也是从一个小白做起,这个星期学习了很多,很多java基础知识,我印象比较深刻的是基本数据类型和引用数据类型
基本数据类型是四类八种,四类是:整型,浮点型,字符型,布尔型,八种分别为:byte short int long float double char boolean,这些基本数据类型用处很大。
下面是一张思维导图可以看一下:
首先说Set集合:Set集合类似于一个瓶子,可以把多个对象丢进去,而Set不能够记住添加元素的顺序。Set集合与Collection基本相同,没有提供额外的方法,也可以说Set就是Collection。如果add()相同的元素,会返回flase,添加失败。
HashSet:HashSet按照Hash算法来存储结合中的元素,因此具有良好的存取和查找的性能。简单的说,HashMap的底层实现是“基于拉链法的散列表”。
LinkedHashSet:使用连表来维护元素,因为需要维护元素的插入顺序,所以性能略低,低于HashSet。
TreeSet:采用红黑树的数据结构来存储集合元素,并且支持两种排序方法,自然排序和定制排序。简单一句话,如果想要TreeSet正常运行,只能添加同一种类型的对象。
Map集合中的元素是通过key,value进行存储的,要获取集合中的key或者value值,可以通过keySet()和values()获取相应的集合,然后通过迭代器遍历相应的集合获取key或者value。
常用方法:HashMap和TreeMap
HashMap 和TreeMap。和所有的具体实现一样,使用哪种实现取决于您的特定需要。在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按顺序遍历键,那么TreeMap 会更好。根据集合大小,先把元素添加到 HashMap,再把这种映射转换成一个用于有序键遍历的 TreeMap 可能更快。使用HashMap 要求添加的键类明确定义了 hashCode() 实现。有了TreeMap 实现,添加到映射的元素一定是可排序的。
HashMap允许使用<null,null>键值,而TreeMap不能。
HashMap实现快速查找,插入和删除,而TreeMap可以实现集合的对象有序排列。
总结:
到这里,对于Java集合框架的总结就结束了,还有很多集合类没有在这里提到,更多的还是需要大家自己去查去用。通过阅读源码,查阅资料,收获很大。
Java集合框架主要包括Collection和Map两种类型。其中Collection又有3种子类型,分别是List、Set、Queue。Map中存储的主要是键值对映射。
规则集Set中存储的是不重复的元素,线性表中存储可以包括重复的元素,Queue队列描述的是先进先出的数据结构,可以用LinkedList来实现队列。
效率上,规则集比线性表更高效。
ArrayList主要是用数组来存储元素,LinkedList主要是用链表来存储元素,HashMap的底层实现主要是借助数组+链表+红黑树来实现。