当前位置: 首页 > article >正文

ArrayList、LinkedList和Vector的区别

ArrayList 容量默认是10,它和 Vector 的底层实现都是基于动态数组,ArrayList 的内部元素可以通过 get 和 set 方法进行访问;LinkedList的底层实现是基于双向链表,当数据量很大或者操作很频繁的情况下,插入和删除元素时具有比 ArrayList 更好的性能,在 get 和 set 方面弱于 ArrayList

LinkedList 比 ArrayList 更占内存,因为 LinkedList 的每个节点除了存储元素,还要存储两个指针,一个指向前驱,一个指向后继。Vector 和 ArrayList 相似,但属于强同步类,内部由于synchronized 同步关键字的存在,其方法都是同步的,保证了线程安全。如果程序本身是线程安全的,使用ArrayLIst是更好的选择。

Vector 的扩容机制是每次请求其大小的2倍空间,ArrayList 自动扩容时,先创建一个长度为原数组长度1.5倍的新数组,然后将原数组中的数据拷贝到新数组中。如果能预估数据量,那么就给 ArrayList 分配一个较大的初始值,可以减少调整大小的开销,ArrayList支持缩容,但不会自动缩容。

LinkedLIst 实现了 Queue 和 Deque 接口,可以使用 offer、peek、poll 等方法。ArrayList根据下标以O(1)时间复杂度对元素进行访问,而LinkedList是O(n)。


http://www.kler.cn/a/304579.html

相关文章:

  • Python 中.title()函数和.lower()函数
  • JavaSecLab靶场搭建
  • c++写一个死锁并且自己解锁
  • 关于GCC内联汇编(也可以叫内嵌汇编)的简单学习
  • 从社交媒体到元宇宙:Facebook未来发展新方向
  • kafka面试题解答(四)
  • Python 的分支结构
  • 如何选择适合企业的高效财税自动化软件
  • 桌面应用框架:tauri是后起之秀,赶上electron路还很长。
  • Mysql | 知识 | 理解是怎么加锁的
  • ansible企业实战
  • 高级java每日一道面试题-2024年9月09日-数据库篇-事务提交后数据仍然没有持久化,可能的原因是什么?
  • 海外服务器:开启全球业务的关键钥匙
  • 神经网络的公式推导与代码实现(论文复现)
  • OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
  • Java中的Lambda表达式和Stream API详解
  • NLTK:一个强大的自然语言处理处理Python库
  • Linux python pyinstaller 打包问题
  • 基于React通用的 WebSocket 钩子 useWebSocket
  • 二进制部署ETCD单机版
  • VITS 源码解析2-模型概述
  • 3.ChatGPT在教育领域的应用:教学辅助与案例分享(3/10)
  • 【kafka】消息队列
  • OpenHarmony鸿蒙( Beta5.0)摄像头实践开发详解
  • RK3588人工智能学习笔记-WSL中使用RKNN-ToolKit2
  • OpenAI全新发布o1模型:开启 AGI 的新时代