List
装载元素的有序容器,List内的元素可以重复,可以通过位置定位到每一个元素或将某一元素插入到固定位置。
List 子类:
List 的选择:
单线程下:
任意方式读取遍历,但只从队列尾部添加,从尾部开始删除,就用ArrayList, (添加到中间或从中间删 除需要重建数组,添加的元素量过大时,不断超过容量,也需要重建数组,最指定容量大小)。
任意位置添加删除,遍历时仅使用迭代器,就用LinkedList。
多线程下
(如果允许,最好使用:ConcurrentLinkedQueue(自旋锁)、 ArrayBlockingQueue(可重入锁)、 LinkedBlockingDeque(可重入锁)):
任意方式读取遍历(迭代器除外),但只从队列尾部添加,从尾部开始删除,可以使用Vector
(大部分方法是同步的,使用迭代器遍历,其它线程改变了Vector,则迭代器报错:ConcurrentModificationException)。
需要后进先出(LIFO) ,可以使用Stack
当读取操作远大于写入删除操作时,可以使用CopyOnWriteArrayList(每次写入删除都会重建数组);
也可以使用Collections.synchronizedList(List<T> list) 对任何一个非线程安全的LIst进行包装而达到线程安全的目的,但迭代时必须同步迭代器,多线程频繁该问时,性能没有优势。
List 在Collection的基础上提供了:
boolean |
add(E e) 向列表的尾部添加指定的元素(可选操作)。 |
|
void |
add(int index, E element) 在列表的指定位置插入指定元素(可选操作)。 |
|
boolean |
addAll(Collection<? extends E> c) 添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序(可选操作)。 |
|
boolean |
addAll(int index, Collection<? extends E> c) 将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)。 |
|
void |
clear() 从列表中移除所有元素(可选操作)。 |
|
boolean |
contains(Object o) 如果列表包含指定的元素,则返回 true。判断方式:equals方法返回true. |
|
boolean |
containsAll(Collection<?> c) 如果列表包含指定 collection 的所有元素,则返回 true。 |
|
boolean |
equals(Object o) 比较指定的对象与列表是否相等。 |
|
E |
get(int index) 返回列表中指定位置的元素。 |
|
int |
hashCode() 返回列表的哈希码值。 |
|
int |
indexOf(Object o) 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。 |
|
boolean |
isEmpty() 如果列表不包含元素,则返回 true。 |
|
Iterator<E> |
iterator() 返回按适当顺序在列表的元素上进行迭代的迭代器。 |
|
int |
lastIndexOf(Object o) 返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。 |
|
ListIterator<E> |
listIterator() 返回此列表元素的列表迭代器(按适当顺序)。 |
|
ListIterator<E> |
listIterator(int index) 返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。 |
|
E |
remove(int index) 移除列表中指定位置的元素(可选操作)。 |
|
boolean |
remove(Object o) 从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。 |
|
boolean |
removeAll(Collection<?> c) 从列表中移除指定 collection 中包含的其所有元素(可选操作)。 |
|
boolean |
retainAll(Collection<?> c) 仅在列表中保留指定 collection 中所包含的元素(可选操作)。 |
|
E |
set(int index, E element) 用指定元素替换列表中指定位置的元素(可选操作)。 |
|
int |
size() 返回列表中的元素数。 |
|
List<E> |
subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。 |
|
Object[] |
toArray() 返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。 |
|
|
toArray(T[] a) 返回按适当顺序(从第一个元素到最后一个元素)包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。 |
ArrarList:
内部使用数组来实现。 其构建器可以指定数组大小,默认构建器指定数组大小为10.
当内部数组已满,不能再添加元素时,会新建更大容量的数组,新数组长度约为原数组长度的1.5倍。
当需要插入的元素很多,而未指定适合的容量,则可能多次重建数组。
ArrayList() 构造一个初始容量为 10 的空列表。 |
ArrayList(Collection<? extends E> c) 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 |
ArrayList(int initialCapacity) 构造一个具有指定初始容量的空列表。 |
List 中判断对象是否存在的方式:调用给定对象的equals()方法与队列中每一个元素比较。
由于内部使用数组实现:
1.获取指定位置的元素速度快(get(index)),在列表尾部添加元素也比较快(通过数组下标访问)
2.在指定位置添加元素慢,在指定位置删除元素也慢。(需要新建数组,复制元素)
使用迭代器时,对ArrayList的插入删除会引起迭代器报错:ConcurrentModificationException
LinkedList :
内部使用链表实现:
1.获取指定位置的元素速度慢(get(index))(需要从链表的头或尾一个一个元素的累加,直到个数==index)
2.在指定位置添加元素快,在指定位置删除元素也快。(链表,改前后元素指向就行了)
使用迭代器时,对LinedList的插入删除会引起迭代器报错:ConcurrentModificationException
LinkedList 遍历时使作iterator()方法比get(每一个index)要快。
CopyOnWriteArrayList:
内部使用数组实现。
读取操作快,插入删除操作慢。
线程安全的:每一个插入删除操作,都先获得锁(其它线程执行插入删除时阻塞),再重建数组,添加或删除元素,把新数组赋给原数组引用。
适用场合:多线程下,当遍历操作的数量大大超过插入删除操作并希望线程安全。读取速度快,插入删除慢且占内存。
Vector:
内部使用数组实现。其构建器可以指定数组大小,默认构建器指定数组大小为10.
当内部数组已满,不能再添加元素时,会新建更大容量的数组,新数组长度为:
newCapacity = (capacityIncrement > 0) ?(oldCapacity + capacityIncrement) : (oldCapacity * 2)
Vector() 构造一个空向量,使其内部数据数组的大小为 10 ,其标准容量增量为零。 |
Vector(Collection<? extends E> c) 构造一个包含指定 collection 中的元素的向量,这些元素按其 collection 的迭代器返回元素的顺序排列。 |
Vector(int initialCapacity) 使用指定的初始容量和等于零的容量增量构造一个空向量。 |
Vector(int initialCapacity, int capacityIncrement) 使用指定的初始容量和容量增量构造一个空的向量。 |
线程安全的: 所有操作方法都是同步(synchronized)的。
适用场合:多线程下,但频繁访问(读取插入删除)相对慢。
stack:
在Vector的基础上提供的先进后出(LIFO)功能。
boolean |
empty() 测试堆栈是否为空。 |
E |
peek() 查看堆栈顶部的对象,但不从堆栈中移除它。 |
E |
pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。 |
E |
push(E item) 把项压入堆栈顶部。 |
int |
search(Object o) 返回对象在堆栈中的位置,以 1 为基数。 |
相关推荐
藏区特产销售平台--论文.zip
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
该单片机项目可作为课程设计和期末大作业或者毕设,项目完整,有原理图和代码,需要的自行下载即可!
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载