Java集合框架入门
集合与数组
Java的集合用来存放对象的引用,而且集合的长度是可变的,可以增加和删改元素。这两点是集合与数组最明显的区别。
数组的内容是固定不变的,适合用索引快速查找,是一种很基本的数据机构。
常用的集合有Map,List,Set
集合框架的实现和继承关系可以简单的以一个图表示

其中,灰色的表示接口,白色框的表示具体实现类
Collection接口
Collection接口是层级结构中的根接口,通常不能直接使用,但是该接口提供了一个简单管理元素的方法,这几个方法在List和Set中是通用的。
| 方法 | 功能描述 |
| add(E e) | 将指定对象添加到该集合中 |
| remove(Object o) | 将指定对象从该集合中移除 |
| isEmpty() | 返回一个Boolean值,判断集合是否为空 |
| iterator() | 返回一个迭代器,需要用一个引用变量接收,用于遍历集合 |
| size() | 返回int值,获取集合中元素的个数 |
List接口
List集合中的元素可重复且有序,各元素的顺序就是对象插入的顺序,可以通过索引访问元素。List接口继承自Collection接口,所以包含了上述Collection的所有方法,此外,还有自己的几个很重要的方法。
| 方法 | 功能描述 |
| get(int index) | 获取指定索引位置的元素 |
| set(int index,Object obj) | 将指定索引位置的元素修改为指定的对象 |
List常用的接口是ArrayList和LinkeList,两种都是线性结构,区别如下:
1、ArrayList地层用数组实现,查询快,增删慢。并实现了可变的数组,允许保存所有元素,包括null.
List<E> list=new ArrayList<>();
2、LinkedList底层用链表实现,查询慢,增删快。
List<E> list=new LinkedList<>();
Set接口
Set集合中的元素无需且不可重复,继承了Collection中的方法。常见的实现类有HashSet和TreeSet。
1、HashSet由哈希表实现,不保证迭代顺序。
2、TreeSet实现了Set接口,还可以实现对元素的排序,也可以按照比较器递增排序。所以,TreeSet中的元素是有序的,所以TreeSet类中增加了以下几个特有的方法。
| first() | 返回Set当前第一个元素 |
| last() | 返回Set最后一个元素 |
| comparator() | 返回对此Set的元素进行排序的毕的比较器,如果此Set使用自然顺序,则返回null |
| headSet(E toElement) | 返回一个新的Set集合,新的集合toElement(不含)之前所有对象 |
| subSet(E fromElement,E toElement) | 返回一个新的Set集合,包含从 fromElement(包含)到toElement(不含)所有元素 |
| tailSet(E fromElement) | 返回一个新的集合,新的集合包含fromElement之后的所有对象 |

浙公网安备 33010602011771号