【JAVA SE基础篇】41.Collection、List方法和ArrayList、LinkedList、Vector底层实现

1.Collection中的方法

Collection表示一组对象,他是集中、收集的意思。Collection接口有两个子接口List和Set接口

Cooleantion中的方法:

1.boolean add(Object element):增加元素到容器

2.boolean remove(Object element):从容其中删除元素

3.boolean contains(Object element):容器中是否包含该元素

4.int size():容器中元素的数量

5.boolean isEmpty():容器是否为空

6.void clear():清空容器中所有元素

7.Iterator iterator():获得迭代器,用于遍历所有元素

8.boolean containsAll(Collection c):本容器是否包含C容器中的所有元素

9.boolean addAll(Collection c):将容器C中所有元素增加到本容器

10.boolean remove(Collection c):移除本容器和容器C中都包含的元素

11.boolean retainAll(Collection c):取本容器和容器C中都包含的元素,移除非交集元素

12.Object[] toArray() :转化成Object数组

例(基本方法):

例(数学集合相关的方法):

2.List

List是有序、可重复的容器。

有序:List中的每个元素都有索引标记。可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素。

可重复:List允许加入重复的元素。更确切地讲,List通常允许满足e1.equals(e2)的元素重复加入容器

List接口常用的实现类有3个:ArrayList、LinkedList和Vector。

List除了可以使用Collection接口的方法,List多了一些跟顺序(索引)相关的方法:

1.void add(int index,Object element):在指定位置插入元素,以前的元素全部后移

2.Object set(int index,Object element):修改指定位置的元素

3.Object get(int index):返回指定位置的元素

4.Object remove(int index):删除指定位置的元素,后面元素全部前移一位

5.int indexOf(Object o):返回第一个匹配元素的索引,如果没有该元素,返回-1

6.int lastIndexOf(Object o):返回最后一个匹配的元素的索引,如果没有该元素,返回-1

例:

3.ArrayList的底层实现

ArrayList底层是用数组实现的存储,特点:查询效率高,增删改效率低,线程不安全(Vevtor安全),比较常用。

数组长度有限,而ArrayList是可以存放任意数量的对象,长度不受限制,是怎么实现的呢?

使用数组的扩容。当数组长度不够了,默认定义一个原先的数组1/2大小的数组(10变成15)。再将原数组内容拷贝至新数组,无限循环。

4.LinkedList的底层实现

 LinkedList底层是双向链表实现存储的。特点:查询效率低,增删改效率高,线程不安全。

双向链表也叫双链表,是链表的一种,他的每个数据节点都有两个指针,分别指向前一个节点和后一个节点。

所以,从双向链表中的中的任意节点开始,都可以很方便的找到所有节点

 5.Vector的底层实现

Vector的底层实现还是数组,相关的方法都加入同步检查,因此线程安全,效率低。

比如indexOf方法就加入了synchronized同步标记

public synchronized int indexOf (Object o,int index){

  //略

}

6.如何选用ArrayList、LinkedList、Vector?

1.需要线程安全时,使用Vector。

2.不存在线程安全时,并在查找时多用ArrayList(常用)

3.不存在线程安全时,增加和删除元素多用LinkedList。

posted @ 2020-06-28 15:55  CKuan  阅读(264)  评论(0编辑  收藏  举报