Java集合---List集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java集合---List集合相关的知识,希望对你有一定的参考价值。
概念
List继承自Collection接口。List是一种有序集合,List中的元素可以根据索引(顺序号:元素在集合中处于的位置信息)进行取得/删除/插入操作。
跟Set集合不同的是,List允许有重复元素。对于满足e1.equals(e2)条件的e1与e2对象元素,可以同时存在于List集合中。当然,也有List的实现类不允许重复元素的存在。同时,List还提供一个listIterator()方法,返回一个ListIterator接口对象,和Iterator接口相比,ListIterator添加元素的添加,删除,和设定等方法,还能向前或向后遍历,具体的方法往下看。List接口的实现类主要有ArrayList,LinkedList,Vector,Stack等。
ArrayList类
ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
ArrayList与Vector的区别
ArrayList | Vector | |
性能 | 采用异步处理方式,性能高 | 采用同步处理方式,性能低 |
线程安全 | 非线程安全 | 线程安全,需要线程安全时使用 |
主要方法
- public boolean add(Object?o):添加元素
- public void add(int index, Object element):在指定位置添加元素
- public Iterator iterator():取得Iterator对象便于遍历所有元素
- public Object get(int?index):根据索引获取指定位置的元素
- public Object set(int index,Object element):替换掉指定位置的元素
排序方法
- Collections.sort(List list):对List的元素进行自然排序
- Collections.sort(List list, Comparator comparator):对List中的元素进行客户化排序
LinkedList类
LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
List list = Collections.synchronizedList(new LinkedList(...));
以上是关于Java集合---List集合的主要内容,如果未能解决你的问题,请参考以下文章