首页 > 其他分享 >面试考点分析( ArrayList和LinkedList对比)

面试考点分析( ArrayList和LinkedList对比)

时间:2024-08-06 11:43:51浏览次数:9  
标签:基于 LinkedList ArrayList 链表 考点 数据结构 复杂度

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

2.两者都是线程不安全,都实现了Collection接口。

3.数据结构:ArrayList是基于动态数组的数据结构,LinkedList是基于双向链表的数据结构。
性能:ArrayList支持随机访问,查询快,增删慢,查询的时间复杂度为O(1),插入和删除的时间复杂度为O(n),因为对插入和删除位置后面的元素进行移动位置,以保证内存的连续性,所以
对于随机访问get和set,ArrayList绝对优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
5.内存空间占用: ArrayList的空 间浪费主要体现在在list列表的结尾会预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗 比ArrayList更多的空间(因为要存放直接后继和直接前驱以及数据)。

标签:基于,LinkedList,ArrayList,链表,考点,数据结构,复杂度
From: https://www.cnblogs.com/N1cholas210162702016/p/18344820

相关文章

  • LeetCode | 160 Intersection of two linkedlists
    https://github.com/dolphinmind/datastructure/tree/datastructure-linkedlist分析判断两个链表是否相交,转换成了双指针相遇的问题。还是那句话,双指针的本质是遍历,走的路其实一样/***解决两个链接不相交而陷入无限循环的情况*初......
  • 搞定Java ArrayList,就看这一篇!
    大家好,我是小欧!今天我们来聊聊Java中的ArrayList。作为一个Java新手,初次接触ArrayList可能会觉得有点懵,不过不用担心,这篇文章会带你从零开始一步步搞定ArrayList。我们会从基础概念开始,然后逐步深入,最后通过几个实际案例来巩固学习成果。ArrayList是什么?简单来说,ArrayLis......
  • arraylist 源码解析
    参考Java集合源码分析(一)ArrayList【源码那些事】超详细的ArrayList底层源码+经典面试题史上最详细的Java集合类ArrayList源代码逐行深入解读JavaArrayList源码分析,带你拿下面试官(含扩容机制等重点问题分析)java进阶教程丨全面深入解析ArrayList原理(源码分析+面试讲解)......
  • 使用LinkedList实现队列和栈
    LinkedList底层是由双向链表实现的,因此可以支持Queue和Stack。本文讨论的实现基于JDK8源码。实现QueueLinkedList本身实现了Queue接口。入队方法签名接口说明(JDK手册)代码实现概括(JDK8)boolean add(Ee)将指定的元素插入此队列(如果立即可行且不会违反容量限制),在......
  • Android开发 - List类中的CopyOnWriteArrayList实现类解析
    CopyOnWriteArrayList是什么CopyOnWriteArrayList是Java并发包(java.util.concurrent)中的一个并发安全的List实现类。它具有特定的设计,使得在并发场景下,读操作(如迭代)可以并发进行,而写操作(如添加、修改、删除)会进行一定的同步,但不会阻塞读操作主要特点和用法:线程安全......
  • Android开发 - List类中LinkedList实现类解析
    什么是LinkedListLinkedList是List接口的一个具体实现类,它基于双向链表数据结构来实现元素的存储和操作主要特点双向链表:LinkedList使用双向链表作为底层数据结构,每个节点(Node)包含对前一个和后一个节点的引用。这使得在LinkedList中插入和删除元素的效率很高,因为只......
  • Android开发 - ArrayList类动态数组与ArrayList<Fragment>解析
    什么是ArrayListArrayList是Java编程语言中的一个类,它实现了动态数组的数据结构。简单来说,ArrayList允许我们创建一个可以动态增长或缩减的数组,这在处理需要频繁添加或删除元素的情况下非常有用主要特点和用途动态大小:ArrayList的大小可以根据需要动态增长或缩减,与普通的数......
  • CopyOnWriteArrayList
    ArrayList是一个线程不安全的容器,如果在多线程环境下使用,需要手动加锁,或者使用Collections.synchronizedList()方法将其转换为线程安全的容器。否则,将会出现ConcurrentModificationException异常。CopyOnWriteArrayList是线程安全的,可以在多线程环境下使用。CopyOnWriteArr......
  • ArrayList底层原理
    1.ArrayList的基本结构  ArrayList内部使用一个Object类型的数组elementData来存储所有的元素。数组的长度可以动态调整。2.初始容量和扩容机制初始容量:当使用无参构造创建一个 ArrayList 实例时会在底层创建一个默认长度为0的数组,可以通过添加参数指定一个初始......
  • 软考-软件设计师(2)-操作系统概述:多级索引、PV操作、段页式存储、磁盘管理、进程管理
    场景软考-软件设计师-操作系统概述模块高频考点整理。以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。注:博客:霸道流氓气质-CSDN博客实现知识点文件系统多级索引求文件系统多级索引的最大长度二级索引=一级索引*一级索引*大小某文件系统......