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

零基础学JAVA--Day32(ArrayList底层+Vector+LinkedList)

ArrayList底层操作机制源码分析

1)ArrayList中维护了一个Object类型的数组elementData.
transient Object[ ] elementData;//transient表示瞬间,短暂的,表示该属性不会被序列化
2)当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第一次添加,则扩容elementData为10,如需要再次扩容,则扩容elementData为上次的1.5倍。

3)如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容则直接扩容elementData为原来的1.5倍。

Victor

基本介绍

1)继承了List和Collection类
2)Vector底层也是一个对象数组,protected Object[ ]elementData;
3)Vector是线程同步的,即线程安全,Vector类的操作方法带有synchronized

public synchronized E get(int index){if (index >= elementCount);throw new ArraylndexOutOfBoundsException(index):return elementData(index);
}

4)在开发中,需要线程同步安全时,考虑使用Vector

Vector和ArryList比较

LinkedList


底层结构

1)LinkedList底层实现了双向链表和双端队列特点
2)可以添加任意元素(元素可以重复),包括null
3)线程不安全,没有实现同步

LinkedList的底层操作机制

1)LinkedList底层维护了一个双向链表
2)LinkedList中维护了两个属性first和last分别指向首节点和尾节点
3)每个节点(Node对象),里面又维护了prev、next、item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双向链表.
4)所以LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高。

一些方法

package com.List;import java.util.LinkedList;public class LinkedListCRUD {@SuppressWarnings("all")public static void main(String[] args) {LinkedList linkedList = new LinkedList();//底层维护的是一个双向链表//增linkedList.add(1);linkedList.add(2);linkedList.add(3);//删除linkedList.remove();//默认删除第一个元素linkedList.remove(1);//按索引linkedList.remove("1");//按元素//改linkedList.set(1,333);//第一个位置代表index,第二个位置是改成啥//查linkedList.get(1);//按索引查找}
}

ArrayList和LinkedList的比较

如何选择ArrayList和LinkedList

1)如果我们改查的操作多,选择ArrayList
2)如果我们增删的操作多,选择LinkedList
3)一般来说,在程序中,80%-90%都是查询,因此大部分情况下会选择ArrayList
4)在一个项目中,根据业务灵活选择,也可能这样,一个模块使用的是ArrayList,另外一个模块是LinkedList.

http://www.dtcms.com/a/609600.html

相关文章:

  • 了解Bootstrap ——初学者
  • 启动Nginx
  • 手机编程网站网站建设软件是什么意思
  • 设计兼职网站推荐自己做的网站网页错位
  • 第1章 机器学习的诞生与演化
  • 从零开始刷算法——二分-搜索旋转排序数组
  • Spring Boot + Vue 全栈开发实战指南
  • 深度智能体-人机回环
  • ASC学习笔记0013:添加一个新的属性集(初始化为默认值)
  • SpringIOC-注解
  • 关闭网站跳转代码wordpress 图片云存储
  • Java练习——数组练习
  • 导航仪企业网站源码那个网站做拍手比较好
  • 离别的十字路口: 是否还记得曾经追求的梦想
  • 3D地球可视化教程 - 第4篇:第5篇:星空背景与粒子系统
  • Unity Shader Graph 3D 实例 - 一个简单的红外线扫描全身效果
  • 【Mastergo】Mastergo总览
  • steam安装游戏为什么磁盘写入错误?磁盘写入错误怎么办?,同样问题解决方案
  • Unity官方文档 Asset Workflow:Importing Assets 阅读笔记
  • UD动作游戏开发读书笔记--. D游戏所需要的数学知识
  • 网站多语切换怎么做网站跳出率多少合适
  • MySQL数据类型全面解析:从数值精度到字符串优化的最佳实践
  • 太阳光模拟器应用:汽车太阳能天窗的发电效能动态测试
  • ES踩了一坑 script查询与float类型的精度
  • ASC学习笔记0015:此能力系统组件是否具有此属性?
  • 如何基于DSL脚本进行elasticsearch向量检索示例
  • 如何利用大语言模型(LLM)实现自动标注与内容增强
  • h5网站有哪些网页设计公司的目标客户有哪些
  • 做网站推广合同做标志的网站
  • 【ZeroRange WebRTC】Amazon Kinesis Video Streams WebRTC Data Plane REST API 深度解析