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

作文网站高中昆明小程序开发公司

作文网站高中,昆明小程序开发公司,泉州企业做网站,怎么设计公司的网站模板目录 1. 数据结构 2. 性能特点 3. 源码分析 4. 代码演示 5. 细节和使用场景 ArrayList 和 LinkedList 分别代表了两类不同的数据结构#xff1a;动态数组和链表。它们都实现了 Java 的 List 接口#xff0c;但是有着各自独特的特点和性能表现。 1. 数据结构 ArrayList… 目录 1. 数据结构 2. 性能特点 3. 源码分析 4. 代码演示 5. 细节和使用场景 ArrayList 和 LinkedList 分别代表了两类不同的数据结构动态数组和链表。它们都实现了 Java 的 List 接口但是有着各自独特的特点和性能表现。 1. 数据结构 ArrayList 是基于可调整大小的数组实现的。它允许快速随机访问因为内部元素可通过数组索引直接访问。LinkedList 是基于双向链表实现的。链表中的每个元素都包含了对其前一个和后一个元素的引用允许双向遍历。 2. 性能特点 特性/操作ArrayListLinkedList随机访问O(1)O(n)添加元素(一般)O(1) (摊销时间)O(1)在末尾添加元素O(1) (摊销时间)O(1)在中间/开始添加元素O(n)O(1)删除元素(一般)O(n)O(1)内存开销较小 (只存数据)较大 (数据 两个引用) 3. 源码分析 ArrayList 源码关键部分 public class ArrayListE extends AbstractListE implements ListE, RandomAccess, Cloneable, java.io.Serializable {transient Object[] elementData; // 存储数据private void ensureCapacityInternal(int minCapacity) {if (elementData DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {minCapacity Math.max(DEFAULT_CAPACITY, minCapacity);}if (minCapacity - elementData.length 0) {grow(minCapacity);}}private void grow(int minCapacity) {// 扩容逻辑}public E get(int index) {rangeCheck(index);return elementData[index];}public boolean add(E e) {ensureCapacityInternal(size 1); // 确保容量elementData[size] e;return true;}// ...省略其他方法 }ArrayList的核心是一个数组。当添加元素会超过当前数组大小时会触发一个“扩容”操作通常是将数组大小增加到当前大小的1.5倍。 LinkedList 源码关键部分 public class LinkedListE extends AbstractSequentialListE implements ListE, DequeE, Cloneable, java.io.Serializable {transient NodeE first;transient NodeE last;private static class NodeE {E item;NodeE next;NodeE prev;Node(NodeE prev, E element, NodeE next) {this.item element;this.next next;this.prev prev;}}public boolean add(E e) {linkLast(e);return true;}void linkLast(E e) {final NodeE l last;final NodeE newNode new Node(l, e, null);last newNode;if (l null)first newNode;elsel.next newNode;size;modCount;}// ...省略其他方法 }LinkedList中的每个元素都是一个节点对象包含了数据和两个指向其它节点的引用。 4. 代码演示 以下代码展示了ArrayList和LinkedList的基本使用 import java.util.ArrayList; import java.util.LinkedList; import java.util.List;public class ListExample {public static void main(String[] args) {ListString arrayList new ArrayList();ListString linkedList new LinkedList();// 添加元素arrayList.add(Element1);linkedList.add(Element1);// 在列表中间插入元素arrayList.add(0, Element2); // O(n)linkedList.add(0, Element2); // O(1), 只需要改变引用// 获取元素String elementFromArrayList arrayList.get(1); // O(1)String elementFromLinkedList linkedList.get(1); // O(n), 需要从头遍历链表// 删除元素arrayList.remove(0); // O(n)linkedList.remove(0); // O(1), 只需要改变引用} }5. 细节和使用场景 ArrayList 优先选择当需要频繁访问列表中的元素。注意处理扩容操作可能会导致短暂的性能下降。更低的内存占用。 LinkedList 当需要频繁进行添加和删除操作尤其是在列表的开头或中间时可以考虑使用。每个元素占用更多内存因为存储了两个额外的引用。 理解这些区别和细节可以帮助你做出适合你应用场景的数据结构选择。尽管LinkedList在某些操作中有其优势但由于内存使用和大多数操作中的性能影响ArrayList通常是默认首选。只有在特定的、频繁进行插入和删除的场景下LinkedList才是更好的选择。
http://www.dnsts.com.cn/news/101809.html

相关文章:

  • 网站改版建设 有哪些内容电子产品网站建设
  • c2c网站特点wordpress怎么安装?
  • 源码网站推荐手机网站域名怎么解析
  • 虹口网站开发培训课程微信小商店怎么分销
  • 网站建设需要缴纳印花税么广告设计与制作毕业设计
  • 织梦网站数据库备份文件夹网站建设步骤 高清教 程
  • 网站建设网站目的模板汕头模板开发建站
  • asp.net做网站教程公司黄页网
  • 设计一个网站的价格表wordpress经典编辑器
  • 做网站电话说辞Light模板WordPress
  • 网站代码如何导入dynamo wordpress主题
  • 在线学做衣服 的网站网页版qq在线登录
  • 客户管理系统网站模板下载九江网站网站建设
  • 新纪实网站建设网域名解析ip查询
  • 鹿泉营销型网站制作价格低wordpress 居中
  • 返利网网站建设网站符号
  • 网站开发前景知乎网络营销实务技能训练题答案
  • 北京到安阳高速费多少钱洛阳霞光seo网络公司
  • 嘉定专业网站制作公司邹城市住房和建设局网站
  • 小学做试题网站ps网站参考线怎么做
  • 怎么注册17做网站wordpress logo
  • 网站建设设计制wordpress入门建站教程
  • spring框架做网站店铺网络推广有哪些渠道
  • 网站策划与建设实训心得蛋糕店网页设计图片
  • 建设商业门户网站的重要网站建设与运营的课程总结
  • 网站建设的原则有哪些方面多语言做网站
  • 浅谈电子商务网站建设与管理的理解百度小程序如何开发
  • 网站显示正在建设中wordpress添加悬浮按钮
  • 华米手表官方网站wordpress前台用户注册
  • 深圳建设工程交易网站温州制造作网站