龙空技术网

java集合List接口

尚硅谷教育 228

前言:

此刻我们对“list集合api”大概比较讲究,同学们都需要学习一些“list集合api”的相关内容。那么小编同时在网络上搜集了一些有关“list集合api””的相关内容,希望我们能喜欢,姐妹们一起来了解一下吧!

List接口

List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。

List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。

JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。

1 List接口的方法

List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法

void add(int index, Object ele)boolean addAll(int index, Collection eles)Object get(int index)int indexOf(Object obj)int lastIndexOf(Object obj)Object remove(int index)Object set(int index, Object ele)List subList(int fromIndex, int toIndex)2 List接口的迭代器ListIterator

除了foreach和Iterator迭代器之外,List 额外提供了一个 listIterator() 方法,该方法返回一个 ListIterator 对象, ListIterator 接口继承了 Iterator 接口,提供了专门操作 List 的方法:

void add()void set(Object obj)void remove()boolean hasPrevious()Object previous()int previousIndex()boolean hasNext()Object next()int nextIndex()3 List的实现类

ArrayList:底层实现是数组,线程不安全,效率高,所以,查询快,修改、插入、删除慢

LinkedList:底层实现是链表,线程不安全,效率高。所以,查询慢,修改、插入、删除快

Vector:底层实现是数组,线程安全,效率低。但是即使为保证 List 集合线程安全,也不推荐使用Vector。

ArrayList的JDK1.8之前与之后的实现区别?

JDK1.7:ArrayList像饿汉式,直接创建一个初始容量为10的数组

JDK1.8:ArrayList像懒汉式,一开始创建一个长度为0的数组,当添加第一个元素时再创建一个始容量为10的数组

1、ArrayList与Vector的区别?

底层都是数组,Vector默认初始容量是10,ArrayList看版本.

ArrayList扩容增加原来的50%,Vector扩容增加原来的1倍。

ArrayList线程不安全,效率高,Vector线程安全,效率低。

Vector因为版本古老,支持Enumeration 迭代器。但是该迭代器不支持快速失败。而Iterator和ListIterator迭代器支持快速失败。如果在迭代器创建后的任意时间从结构上修改了向量(通过迭代器自身的 remove 或 add 方法之外的任何其他方式),则迭代器将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就完全失败,而不是冒着在将来不确定的时间任意发生不确定行为的风险。

自学:Enumeration 迭代器的使用

2、LinkedList的特点

LinkedList:双向链表,除了保存数据,还定义了两个变量:

prev变量记录前一个元素的位置

next变量记录下一个元素的位置

例如:

对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高。新增方法:

void addFirst(Object obj)void addLast(Object obj)Object getFirst()Object getLast()Object removeFirst()Object removeLast()

相关阅读:

Spring集合属性

java集合的遍历

java集合Collection接口

Collection集合框架和map

集群监控利器之Zabbix

标签: #list集合api