List集合有序、元素可重复。以元素的添加顺序作为集合的排列顺序,用下标索引集合中的元素。

List因为使用下标索引元素,所以元素可重复。Set使用元素本身来索引,所以元素不能重复。

List的继承关系:

List继承了Collection的所有方法,也有自身的一些方法(下标操作):

void add(int index,Object element) 在指定处插入一个元素

boolean addAll(int index,Collection c) 在指定处插入c的所有元素

Object get(int index) 获取指定位置处的元素

int indexOf(Object obj) 返回该对象在集合中第一次出现的位置

int lastIndexOf(Object obj) 最后一次出现的位置

Object remove(int index) 删除并返回指定位置的元素

Object set(int index,Object obj) 替换/设置指定位置的元素,并返回旧的元素

List subList(int start,int end) 返回子List

ListIterator listIterator() 返回List集合专用的迭代器

Java8新增了sort()、replaceAll()2个方法,可以自定义排序规则、匹配模板。

List接口常用的实现类:

1、ArrayList、Vector。

ArrayList、Vector都是基于数组实现的List接口,内部都封装了一个动态的、长度可变的数组。

向ArrayList、Vector集合中添加元素,如果数组长度不够,会自动调用 ensureCapacity() 重新设置数组长度,一般不用我们操心。

如果要向ArrayList、Vector添加大量元素,可以手动调用ensureCapacity() 一次性增大数组长度,这样可以减少重新分配的次数,提高性能。

ensureCapacity(int minCapacity) //参数是数组的最小元素个数

Vector有一个子类Stack,用于模拟栈这种数据结构。

ArrayList不是线程安全的,当多个线程同时访问、修改ArrayList集合时,需要手动同步该集合。

Vector是线程安全的,但这意味着Vector有更大的开销,所以性能低于ArrayList。

尽管Vector是线程安全的,但Vector的缺点太多了,尽量不要使用Vector。

2、LinkedList

LinkedList不仅实现了List接口,还实现了Queue接口的子接口Deque。Queue接口用于模拟队列这种数据结构。

LinkedList是基于链表实现List接口的,内部维护了一个链表,来实现有序。

性能分析:

Queue集合、List集合是Java中的线性表结构。Queue很少使用。

ArrayList、Vector是基于数组的,LinkedList是基于链表的。

Vector既要维护一个数组,又要保证线程安全,开销较大,性能最差,一般不用。

ArrayList基于数组,查找元素较快,适合多查找的操作,但插入、删除需要移动大量数组元素。

LinkedList基于链表,适合经常插入、删除的操作,但查找效率不高。

虽然LinkedList、ArrayList都有 Object get(int index),void set(int index, Object obj)方法,

但LinkedList基于链表,它操作元素的方法基本上都要遍历链表,直到指定的元素才停下。尽管要遍历链表,但删除、插入时不用移动其它元素,速度较快。它的get()、set()都不是随机存取,要遍历链表,直到指定的index才停下来,速度很慢,获取、设置元素值尽量不要用get()、set(),而使用迭代器,遍历集合,迭代器更专业,速度更快。

ArrayList基于数组,它的get()、set()才是随机存取。尽管是随机存取,但插入、删除元素时要移动大量的元素,速度很慢。获取、设置元素的值不要用迭代器,尽量用get()、set(),随机存取更快。

优质内容筛选与推荐>>
1、linux查询硬件信息(CPU、内存、主板等)
2、hibernate连接Mysql中文乱码处理
3、3.15课堂笔记
4、实验八--函数定义及调用总结
5、 从技术角度看CSDN论坛的三个重要的阶段


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号