关于List集合的简介
List属于Collection的一个子接口,list集合拥有collection集合所有的方法,List主要几个实现类有ArrayList、Vector、LlinkedList,今天主要介绍这几个实现类
文章目录
List特点:
1、List是有序的collection,因此用户可以根据元素的索引(元素在列表中的位置)来找到。
2、List中的元素是可以重复的。
List特有的迭代器:
Iterator:
①hasNext()
②next()
③remove()
List集合的调优:如果知道每次大概增长的数量,就可以传一个参数,改变集合的初始大小,减少容器传输的次数
ArrayList
array与ArrayList的区别
----------array长度固定,ArrayList反之
----------array一旦声明,只能放该类型的对象
ArrayList与Linkedlist的区别
数据结构
ArrayList的数据结构是数组存储,造成了查询速度快,增删慢,线程不同步
Linkedlist的数据结构是链表存储,造成了增删快,查询慢
ArrayList集合的特点:
1、数组结构
2、有连续下标。增删慢,查询。(因为他是有序的,有下标,所有每增加一个或减少一个,整个集合的下标都要跟着改变,所以增删慢。但是正是因为它有下标所以可以根据下标来查询,所以查询速度快)
3、线程不同步
4、增长因子为1.5
这是ArrayList的一些特有方法
LlinkedList
AlinkedList集合的特点:
1、链表结构(双链表结构:当前元素只能知道自己上一个元素的和下一个元素)
链表结构: 链表结构是由许多节点构成的,每个节点都包含两部分:
①数据部分:保存该节点的实际数据(值)
②地址部分:保存的是下一个节点的地址(也就是我们的下标)。
③单向链表:只能获取自己下一个元素的节点
④双向链表:能获取自己上一个元素和下一个元素的节点
2、增删改查都慢 有连续下标
3、 线程同步
4、增长因子2
LinkedList集合的一些特有方法:
addFirst();
addLast();
获取元素但是不删除元素,如果集合中没有元素,会出现NoSuchElementException
getFirst();
getLast();
获取元素的同时会删除元素,如果集合中没有元素,会出现NoSuchElementException
removeFirst();
removeLast();
在jdk1.6出现了替代方法
offerFirst()
offerLast()
peekFirst();
peekLast();
获取元素的同时会删除元素,如果集合中没有元素,会返回null
pollFirst();
pollLast();
我们能用LinkedList实现堆栈存储结构和队列存储结构
堆栈:先进后出(就比如我们把a,b,c,d,e依次存进去,取出后它的顺序会变为e,d,c,b,a)
队列:先进后出(就比如我们把a,b,c,d,e依次存进去,取出来顺序还是a,b,c,d,e)
Vector
Vector集合的特点:
1、数组结构
2、增删改查都慢
3、有连续下标
4、线程同步
5、增长因子2
独有的特点:可以通过枚举遍历
public static void main(String[] args) {
Vector v=new Vector<>();
v.add("xx");//添加元素给集合
v.add("aa");
Enumeration eles=v.elements();
while(eles.hasMoreElements()){
System.out.println(eles.nextElement());
}
小技巧
解决eclipce按住Ctrl键查看源代码无法显示问题
点击“Attach Source”,在此对话框下,选择”External location“,然后找到你的jdk的文件安装路径(不是jre),找到src.zip,然后导入,问题就解决了
最后导入就成功解决了