登录/注册
L
个人中心
我的账号
我的订单
我的消息
VIP计划
注销登录
首页
编程教程
Java
Spring
Spring Cloud
Vert.x
Thymeleaf
JAVA UI
Python
Softwares
MySQL
Android
nginx
Wechat
WEB
JavaScript
CSS
Vue.js
Web Editor
SEO
Docker Case
Linux
Linux Security
Office
Jenkins
玩机教程
Router
Proxmox VE/PVE
Synology
飞牛私有云/FNOS
AI
Stable Diffusion
deepseek
资源分享
在线工具
JSON Formatter
HTML Formatter
CSS Formatter
Javascript Formatter
CPUMark
Base64在线编码/解码
URL在线编码/解码
首页
编程教程
Java
java基础ArrayList与LinkedList的区别以及使用场景
详情
java基础ArrayList与LinkedList的区别以及使用场景
编程教程
>
Java
(1743)
2024-11-26 14:39:04
一.ArrayList与LinkedList的区别
说法一:
因为Array是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度是O(1),但是要新增或者删除数据却是开销很大的,因为这需要重排数组中的所有数据。
相对于ArrayList,LinkedList插入是更快的。因为LinkedList不像ArrayList一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是ArrayList最坏的一种情况,时间复杂度是O(n),而LinkedList中插入或删除的时间复杂度仅为O(1)。ArrayList在插入或sh数据删除需要更新索引(除了插入数组的尾部)。
LinkedList需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,而LinkedList中的每个节点中存储的是实际的数据和前后节点的位置
说法二:
ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
以上说法均为正确。
二.ArrayList与LinkedList的使用场景
LinkedList:
你的应用不会随机访问数据。因为如果你需要LinkedList中的第n个元素的时候,你需要从第一个元素顺序数到第n个数据,然后读取数据。
你的应用更多的插入和删除元素,更少的读取数据。因为插入和删除元素不涉及重排数据,所以它要比ArrayList要快。
ArrayList:
你的应用需要随机访问数据,基本不会在list中插入或者删除元素
Java基础
ArrayList
LinkedList
http://blog.xqlee.com/article/292.html
评论
昵称
*
邮箱
*
网站
评论
取消评论
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。
相关文章
java基础ArrayList与LinkedList的区别以及使用场景
本文组要摘录了网上各位大佬的总结。作为笔记搜录。尽量详细的讲解ArrayList与LinkedList的区别以及在何时选择那个用。
Java基础
ArrayList
LinkedList
java编程基础数组ArrayList使用详解
java编程基础数组ArrayList使用详解
Java编程
java基础
java
ArrayList
Java如何复制目录_Java基础教程系列
Java如何复制目录,Java基础教程系列,如果要将目录及其包含的所有子文件夹和文件从一个位置复制到另一个位置,请使用下面的代码,该代码使用递归遍历目录结构,然后使用Files.copy()函数...
Java
io
Java基础教程
Java基础多线程之线程同步(主线程等待子线程结束)
Java基础多线程之主线程等待子线程结束,Java基础编程之多线程入门学习篇。主要讲解几种方法来实现Java多线程中主线程等待子线程结束的最快方式。
Java基础
Java多线程
java常见面试题
java常见面试题之冒泡排序
java面试题
冒泡排序
Java Bean 基础验证
在这篇快速文章中,我们将介绍使用标准框架 - JSR 380(也称为Bean Validation 2.0)来验证Java bean的基础知识。当然,在大多数应用程序中验证用户输入是超常见的需求...
java
java bean
Java正则表达式基础使用
Java正则表达式基础使用及常见正则符号说明,Java正则使用基础参考代码:package org.xqlee.utils.regular;import jav
Java
正则表达
Java正则使用
Java基础JVM中堆和栈理解
Java基础JVM中堆和栈理解,收集各大网站各大牛人的语录,在Java中,内存主要分为两种,一种是栈(stack)内存,另一种就是堆内存(heap)(某些情况下说的堆栈内存是指栈内存)。
java基础
Java堆栈
heap
stack
Java Queue队列使用入门详解
Java Queue队列使用入门详解
Queue
Java
队列
java编程中float/double类型的正确比较方法
java基础编程中float/double类型的正确比较方法
java
java基础
Java编程
Java List集合交集并集
数组转集合List<String>l; list=Arrays.asList("1","2");注意转换出来的List为Arrays内部类集合,与常规的ArrayList有区别,比如常...
Java 集合
Java List
Java编程之Spring Cloud Hystrix Circuit熔断/断路
Java编程之Spring Cloud Hystrix Circuit熔断/断路
Java编程
spring框架
Java编程之Spring Boot通过JMSTemplate 整合ActiveMQ
Java编程之Spring Boot通过JMSTemplate 整合ActiveMQ
spring boot
java编程
Java8 Stream之list转map
//声明一个List集合List<Person>l; list = new ArrayList(); list.add(new Person("1001", "小A...
stream
Java 8 stream
java8 Function函数编程详解
java8 Function函数编程详解Function函数基础定义和使用 public static void t1(){ Function<Integer,Int...
java 8 Function
java 8函数编程
函数编程
Java
目录
热门文章
openwrt/immortalWRT 23.05 x86 主路由必选插件
[Router]
immortalwrt/openwrt x86/64软路由物理安装
[Router]
openwrt官方squashfs版 x86/64扩容
[Router]
openwrt ttyd 拒绝连接【已解决】
[Router]
immortalwrt(openwrt-ext4版) x86/64软路由扩容
[Router]
最近更新
Java 图片等比缩放
[Java]
Ubuntu/Linux crontab定时任务不执行分析解决
[Linux]
Nginx location路径匹配详解
[nginx]
Nginx 缓存静态资源到硬盘
[nginx]
Maven build构建项目前zip解压/加压某个文件
[Spring]
使用协议和Cookie告知:
🍪
使用协议和Cookie告知:
我们需要使用cookie来确保您在我们的网站上获得最佳体验。另外还您还需遵守本站相关协议。:
了解更多
我同意