什么是集合:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象。
集合框架图
说明:所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。
Collection接口
- 是List、Set和Queue接口的父接口;
- 定义了可用于操作List、Set和Queue的方法——增删改查;
- List接口及其实现类——ArrayList
-
- List(序列),元素有序,并且可重复;
- List可以精确控制元素的插入位置,或删除指定位置的元素;
- ArrayList——数组序列,是List的一个重要实现类;
- ArrayList底层是由数组实现的
ArrayList
ArrayList是一个动态数组,也是我们最常用的集合。它允许任何符合规则的元素插入甚至包括null。每一个ArrayList都有一个初始容量(10),该容量代表了数组的大小。随着容器中的元素不断增加,容器的大小也会随着增加。在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作。所以如果我们明确所插入元素的多少,最好指定一个初始容量值,避免过多的进行扩容操作而浪费时间、效率。
LinkedList
- 同样实现List接口的LinkedList与ArrayList不同,ArrayList是一个动态数组,而LinkedList是一个双向链表。所以它除了有ArrayList的基本操作方法外还额外提供了get,remove,insert方法在LinkedList的首部或尾部。
- 由于实现的方式不同,LinkedList不能随机访问,它所有的操作都是要按照双重链表的需要执行。在列表中索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。这样做的好处就是可以通过较低的代价在List中进行插入和删除操作。
- Set接口及其实现类——HashSet
-
- Set(集),元素无序,并且不可以重复;
- HashSet——哈希集,是Set的一个重要实现类;
- Map接口
-
- key值不能重复,value值可以重复;
- key对value是多(一)对一的关系;
- Map接口提供了返回key值集合、value值集合、Entry值集合,的方法;
- HashMap类
- HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;
- HashMap中的Entry对象是无序排列的;
- Key值和value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(Key值不可重复);
- 迭代器Iterator
Iterator是一个接口,它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口如下:
- boolean hasNext():判断集合里是否存在下一个元素。如果有,hasNext()方法返回 true。
- Object next():返回集合里下一个元素。
- void remove():删除集合里上一次next方法返回的元素。