集合类的由来:
对象用于封装特有数据,对象多了需要存储,如果对象个数不确定。就使用集合容器进行存储。
集合的特点:
-
用于存储对象的容器。
-
集合的长度是可变的。
-
集合中不可以存储基本数据类型值。
集合容器因为内部的数据结构不同,有多种具体容器。不断的向上抽取,就形成了集合框架。框架的顶层是Collection接口。
Collection的常见方法:
-
添加。
boolean add (E e);
boolean add(Collection coll);
-
删除。
boolean remove(E e);
boolean remove(Collection coll);
void clear();
-
判断。
boolean contains(E e);
boolean containsAll(Collection coll);
boolean isEmpty();
-
获取。
int size();
Iterator iterator();取出元素的方式:迭代器。
该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。所以该迭代器对象是在容器中进行内部实现的。对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,也就是iterator方法。
Iterator接口就是对所有的Collection容器进行元素取出的公共接口。
-
其它:
boolean retainAll(Collection coll);取交集。
Object[] toArray();将集合转成数组。
-
List接口和Set接口
List特点:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。
Set特点:元素不能重复,无序。
List特有常见方法:有一个共性特点就是都可以操作角标。
-
添加
void add(index,element);
void add(index,collection);
-
删除
Object remove(index);
-
修改
Object set (index,element);
-
获取
Object get(index);
int indexOf(object);
int lastIndexOf(object);
List subList(form,to);
在迭代器过程中,不要使用集合操作元素,容易出现异常。可以使用Iterator接口的子接口ListIterator来完成在迭代中对元素进行更多的操作。
ListIterator可以实现在迭代过程中完成对元素的增删改查。注意:只有List集合具备该迭代功能。
List接口常用子类:
-
Vector:内部是数组的数据结构,是同步的。增删,查询都很慢。
-
ArrayList:内部是数组的数据结构,是不同步的。查询的速度快。
-
LinkedList:内部是链表数据结构,是不同步的。增删元素的速度非常快。