集合的本质是基于某种数据结构的数据容器,常见的基本数据结构:数组(Array)、集(Set)、队列(Queue)、链表(LinkedList)、树(Tree)、堆(Heap)、栈(Stack)、映射(Map)。
在学习过程中可以先从List、Set、Map这三个接口入手,然和再熟悉其各自的实现类,并了解区别。
1、List集合
List集合中的元素都是有序的,可以重复出现。
List接口的实现类有:ArrayList和LinkedList。ArrayList是基于动态数组结构的实现,LikedList是基于链表数据结构的实现。ArrayList访问元素速度优于LinkedList,LinkedList占用的内存空间比较大,但LinkedList在批量插入或删除数据时优于ArrayList。
在Java中任何集合存放的都是对象,即引用数据类型,基本数据类型不能存放到集合中,平时使用集合时将int存放进List是因为在这个过程中发生了自动装箱,将int数据类型封装成Integer对象,相反的,取出得也是对象,在取出过程中,将Integer对象自动拆箱转换成int类型。
2、Set集合
Set集合是一串无序的,不能重复的相同类型的元素构成的集合。
实现Set接口的主要是HashSet,HashSet是基于散列表数据结构的实现。
Map集合
Map(映射)集合表示一种复杂的集合,允许通过某个健来访问元素,Map集合是由两个集合构成的,一个健(Key)集合,一个是值(value)集合。健集合是Set类型,因此不能有重复的元素,而值集合是Collection类型,可以有重复的元素,Map集合中的健和值是成对出现的。
Map集合更适合通过健快速的访问值,就像查英文字典一样,而值是英文单词的翻译和解释等。有时候一个Key会对应多个Value,只是Map集合的特性。