1.ArrayList特点及优缺点
ArrayList : Array数组,List列表,从名称中可看出ArrayList是一个基于数组的集合
事实上ArrayList就是用数组来存储信息
ArrayList的特点:
<1>有序
数组的特点是有序:意思是元素存入集合的顺序和取出的顺序一致
<2>可重复
可重复的意思是它里面可以存储重复的元素
<3>可为null
意思是在里面可以存储null元素
ArrayList的优点:
<1>查询快
只需要知道索引,马上就可以查出来,ArrayList是所有容器中查询最快的一个
ArrayList的缺点:
<2>增删慢
为什么会增删慢?
因为数组存满了以后要扩容,扩容是先创建一个原来容量1.5倍的数组,然后把之前的元素拷贝到新数组中来,这样一来添加元素的效率就大大降低
创建1.5倍的数组
把之前元素拷贝到新数组中来
再添加数据
小知识点:
(1)什么的大小(size)
大小(size)就是指元素的个数
(2)什么是容量(capacity)
容量(capacity)就是数组的长度
ArrayList的创建方式:
ArrayList一共三个构造方法
public class ArrayList<E>{
//通过无参的构造方法来创建,数组默认初始容量是10
public ArrayList()
//可以指定数组的初始容量
public ArrayList(int initialCapacity)
// 可以将另一个集合的元素插入到ArrayList集合中,数组的初始容量就是插入集合的大小
public ArrayList(Collection<? extends E> c)
}
ArrayList的常用方法
ArrayList作为List的子类,而List又作为Collection的子类,ArrayList有着Collection和List的所有方法
ArrayList的常用方法分类
//根据索引获取元素
get(int index)
//根据元素获取对应的索引
indexOf(Object 0)
//迭代器
iterator()
//添加元素
add(E)
//覆盖指定位置的元素
set(int index,E element)
//删除指定位置的元素
remove(int index)
//清空集合
clear()
//为集合创建流
stream()
ArrayList是在开发中用得最频繁的容器
2.LinkedList特点及优缺点
LinkedList: Linked链式,List列表,简称链表,顾名思义它是基于链表实现存储数据,并且是双向链表,所有LinkList又称双向列表
public class LinkedList<E> {
private static class Node<E>{
//存储数据的地方
E item;
//后一节点
Node<E> next;
//前一节点
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
//用first属性来记录第一个元素,即头节点
transient Node<E> first;
//用last属性来记录最后一个元素,即尾节点
transient Node<E> last
}
LinkedList的特点:
(1)有序
元素存入的数据和取出的数据一致
(2)可重复
在列表里面可以再存储一个相同的元素
(3)可为null
在里面可以存储null元素
LinkedList的优点:
(1)增删快
只需记录前后节点即可,不需像ArrayList一样,还要调整数组大小
LinkedList的缺点:
(1)查询慢
即使知道索引,也需要从头部或者尾部,开始一个接一个的查
LinkedList的常用方法
LinkedList的常用方法分类
ArrayList与LinkedList的比较
总结:
通过比较,可得出在平常开发中,如果需要频繁的查询数据,则可以用ArrayList,而需要频繁的增删,可以使用LinkedList