List:List接口有哪些集合?
本文最后更新于53 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

List接口时Collection的子接口,表示有序集合,允许存储重复的元素,常见的List实现类又ArrayList、LinkedList、Vector

 

ArrayList基于动态数组实现,存在容量限制,但有自动扩容机制,在内存中连续存储,适合随机访问,适用于频繁访问元素的场景。随机访问O(1),尾部插入和删除O(1),扩容O(n),其他位置插入和删除O(n),排序O(n logn),查询是否含某个元素O(n)

ArrayList创建时容量为0,当第一次添加元素时初始容量变为10,后续每次扩容1.5倍,扩容逻辑是,当判断添加元素后,所需链表长度大于容量,则扩容,本质上是计算出新的扩容数组的size之后实例化,将原来数组内容复制到新数组。

ArrayList的Fail-Fast:使用modCount记录结构发生变化的次数(包括添加、删除元素,调整内部数组大小等),在序列化或者迭代等操作的时候,会必较操作前后的modCount是否改变,如果发生改变则报错ConcurrentModificationException。

 

LinkedList基于双向链表实现,不存在容量限制,在内存中不连续,适用于需要频繁进行插入和删除的操作场景,不支持随机访问,遍历查询O(n),头尾插入删除O(1),其他位置插入删除O(n)

LinkedList也可以当作队列(Queue)使用

 

ArrayList和LinkedList都不是线程安全的。

 

Vector和ArrayList类似,但主要方法都是synchronized方法,通过互斥同步方式保证线程安全

Stack继承于Vector类,后进先出,有特定的使用场景

 

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇