集合类

集合类的由来:

对象用于封装特有数据,对象多了就需要存储。如果对象的个数不确定,就是用集合容器进行存储。集合是一个容器,本身也是一个对象。

集合特点:

1. 用于存储对象的容器;

2. 集合的长度是可变的;(数组长度不可变)

3. 集合中不可以存储基本数据类型值;(只能存储对象,但数组都可以存储)

数值有很多,用数组存;数组有很多,用二维数组存;数据有很多,用对象存;对象有很多,用集合存;

集合容器因为内部的数据结构不同,有多种具体容器。不断的向上抽取,就形成了集合框架。

框架的顶层Collection接口:

Collection的常见方法:

1. 添加

boolean add(Object obj);

boolean addAll(Collection coll);

2. 删除

boolean remove(Object obj);

boolean removeAll(Collection coll);

3. 判断

boolean contains(Object obj);

boolean containAll(Collection coll);

boolean isEmpty();判断集合中是否有元素

4. 获取

int size();

Iterator iterator();取出元素的方式:迭代器

5. 其他

boolean retainAll(Collection coll);取交集

Object toArray();将集合转成数组

如何获取集合中的数据?

使用了Collection中的iterator()方法。调用集合中的迭代器方法。是为了获取集合中的迭代器对象。

while循环导致it对象在while循环之后,依然存在,占用内存空间。故开发过程中通常使用for循环。

迭代器原理:

Iterator iterator():

取出元素的方式:迭代器

该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。所以该迭代器对象是在容器中进行内部实现的。

对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的对象即可。也就是iterator方法。

Iterator接口就是对所有的Collection容器进行元素取出的公共接口。

Collection:

1. List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。

2. Set:元素不能重复,无序。

List特有的常见方法:有一个共性特点是都可以操作角标。

添加:

void add(index,element);

void add(index,collection);

删除:

Object remove(index);

修改:

Object set(index,element);

获取:

Object get(index);

int indexOf(iobject);

int lastIndexOf(object);

List subList(from,to);

List集合可以完成对元素的增删改查。

ListIterator接口

List:

常用三个子类:

Vector:内部是数组数据结构,是同步的。增删,查询都很慢

ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。

LinkedList:内部是数组数据结构,是不同步的。增删元素的速度很快。

Vector类

LinkedList类

练习:

LinkedList:

LinkedList相对ArrayList较少用。如果找不到该用那个,就用ArrayList(使用频率较高).

ArrayList:

推荐阅读更多精彩内容