java集合主要有三种类型:

   ●List:是个有序集合,可以放重复的数据

   ●Set: 是个无序集合,不可以放重复数据

   ●Map: 是个无序集合,一个键对象,一个值对象,键对象不可以重复,值对象可以重复。


以下图解是List和Set集合的继承关系:

java中的集合讲解



也许你看了上面的继承图,可能有点疑惑:链表、哈希表等数据结构到底是怎么样的呢?

接下来详细解析一下数组、链表和哈希表等数据结构:

●数组数据结构:

java中的集合讲解


    通过上图不难发现,知道了数组首元素内存地址,要查找的元素只要知道下标就可以快速计算出偏移量,通过首元素内存地址加上偏移量快速计算出要查找元素的内存地址,通过内存地址就可以快速定位该元素,所以数组查询效率很高。同理,增删元素时,为了保证数组中的元素是有序的,就要重新维护这个顺序,导致增删元素效率很低。


●单向链表数据结构:

java中的集合讲解



●双向链表数据结构:

java中的集合讲解

存储原理和单向链表类似,在这里就不多说了。


●哈希表数据结构:


java中的集合讲解

哈希表可以看做是,数组和单向链表的结合,所以哈希表的增删和查询效率都是很高的。