List集合

Java主要包含4 种集合(List、Queue、Set和Map),其中List、Queue、Set的父类都是Collection。   

1. List 集合(对象可重复的、有序的,即集合中的对象的顺序和对象进入集合的顺序一致)

ArrayList:基于数组实现,增删慢,查询快,线程不安全

ArrayList 是基于数组实现的,ArrayList 在定义的时候可以不指定数组的长度(默认为10),在长度不满足存储要求时,ArrayList 会新建一个更大的数组并将数组中已有的数据复制到新数组中。

ArrayList 的缺点是其元素必须是连续存储的,当需要在 ArrayList的中间节点添加或者删除元素时,必须对该节点后面的元素进行移动,因此ArrayList 不适合随机插入和删除操作,适合随机查找和遍历操作。

java list集合存储到本地文件 java里的list_java list集合存储到本地文件

Vector(基于数组实现,增删慢,查询快,线程安全)

Vector与ArrayList一样,是基于数组实现的,但Vector支持线程同步,即在同一时刻只允许一个线程对其进行写操作(即增加、删除、修改),因此其可以保证多线程下数据的一致性,但Vector的写操作会频繁的对 Vector 实例进行加锁和释放锁的操作,因此Vector 的读写效率会比 ArrayList 低。
Vector初始化时也可不指定长度,默认为10,其不指定长度的初始化的实现如下:

public Vector() {
        this(10);
}

LinkedList(基于双向链表实现,增删快,查询慢,线程不安全)

LinkedList 是采用双向链表存储元素的,因此其在插入和删除操作时只需修改上一节点与下一节点和下一节点的上一节点的指向,因此LinkedList 的随机插入和删除效率很高,但对链表进行随机访问时,需要从链表的头部进行遍历,直到该节点为止,因此LinkedList 的随机访问速度很慢。

LinkedList的节点结构:

java list集合存储到本地文件 java里的list_数组_02


LinkedList添加节点的具体实现

java list集合存储到本地文件 java里的list_java list集合存储到本地文件_03


java list集合存储到本地文件 java里的list_数组_04