Collection接口
1.首先,我们要对Collection接口有以下几点认知:
在Java类库中,集合类的基本接口就是Collection接口,它包含了集合的基本操作和属性,是高度抽象出来的。 同时,Collection也是单个集合保存的最大父接口。另外,Collection中有一个iterator()函数,它的作用是返回一个Iterator接口。通常,我们通过Iterator迭代器来遍历集合。
2.定义:
public interface Collection extends Iterable
3.Collecntion接口的基本方法:
其中使用最频繁的是add()、iterator()方法
Iterator iterator():用于访问集合中每个元素的迭代器
4.Collection接口的定义:
其子接口均有add()、iterator()方法
5.List接口
(1)定义:List接口是我们进行集合处理时优先考虑的。List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0。
(2) 特点:
a.List接口继承于Collection接口,它可以定义一个允许重复的有序集合。因为List中的元素是有序的,所以我们可以通过使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
b.List接口为Collection直接接口。List所代表的是有序的Collection,即它用某种特定的插入顺序来维护元素顺序。用户可以对列表中每个元素的插入位置进行精确地控制,同时可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
c.在List接口中,通过ListIterator()返回一个ListIterator对象
d.实现List接口的集合主要有:ArrayList、LinkedList、Vector、Stack。
(2)与Collection接口的不同点:a.扩充了两个新的重要方法
public E get(int index); -根据索引取得保存的数据
public E set(int index,E element);–修改数据
b.
(3)类图关系:
(4)ArrayList
a.它是一个针对于List接口的数组实现,是一个动态数组,也是我们最常用的集合。它允许任何符合规则的元素插入甚至包括null。每一个ArrayList都有一个初始容量(10),该容量代表了数组的大小。随着容器中的元素不断增加,容器的大小也会随着增加。在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作。所以如果我们明确所插入元素的多少,最好指定一个初始容量值,避免过多的进行扩容操作而浪费时间、效率。
b.
优点:对于get()和set()方法的调用花费为常数时间。ArrayList擅长于随机访问。
缺点:新项的插入和现有项的删除代价昂贵。且ArrayList是非同步的
(5)LinkedList
a.LinkedList是一个双向链表, 它除了有ArrayList的基本操作方法外还额外提供了get(),remove(),insert()方法在LinkedList的首部或尾部。
b.优点:新项插入与删除的开销均很小。
缺点:不易被索引。
(6)对比ArrayList和LinkedList:
在末端添加一些项构造一个List
public static void makelist(List<Integer> lst,int N){
lst.clear();
for(int i=0;i<