Java学习 - List集合

List集合

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

   

1. List 集合(对象可重复的、有序的,即集合中的对象的顺序和对象进入集合的顺序一致)
  • ArrayList:基于数组实现,增删慢,查询快,线程不安全

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

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

在这里插入图片描述

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

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

public Vector() {
        this(10);
}
  • LinkedList(基于双向链表实现,增删快,查询慢,线程不安全)

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

LinkedList的节点结构:
在这里插入图片描述
LinkedList添加节点的具体实现
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值