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

Java八股文-List

在这里插入图片描述
集合的底层是否加锁也就代表是否线程安全

(一)List集合

在这里插入图片描述

一、数组

在这里插入图片描述
array[1]是如何通过索引找到堆内存中对应的这块数据的呢?

(1)数组如何获取其他元素的地址值

在这里插入图片描述

(2)为什么数组的索引是从0开始的,不可以从1开始吗

在这里插入图片描述

(3)操作数组的时间复杂度
①查找
  1. 根据索引查询
    在这里插入图片描述
  2. 未知索引查询
    情况一:
    在这里插入图片描述
    因为要想在未知索引且未进行排序的情况下去查找数组内的元素就需要去遍历整个数组,所以它的时间复杂度就为O(n)
    情况二:
    在这里插入图片描述
    数组在经过排序以后就可以使用二分查找法来查找元素,时间复杂度就为O(logn)
②插入、删除

在这里插入图片描述

(3)总结

在这里插入图片描述

二、ArrayList源码分析

在这里插入图片描述
关键方法指的是添加方法与扩容方法

(1)成员变量

在这里插入图片描述

(2)构造方法

在这里插入图片描述
collection对象是所有单列集合的父接口

(3)关键方法

测试方法:
在这里插入图片描述

①第一次添加数据(也就是数组初始化的情况)

在这里插入图片描述
ensureCapacityInternal方法用于确保elementData数组的内部容量,calculateCapacity方法用于计算容量,ensureExplicitCapacity方法用于确保明确的容量

②第二至十次添加数据(也就是数组不扩容的情况)

在这里插入图片描述
在第二至第十次添加数据时都是直接向数组中插入数据,不需要进行数组扩容

③第十一次添加数据(也就是数组扩容的情况)

在这里插入图片描述

三、ArrayList的底层原理及构造函数

(1)底层原理

在这里插入图片描述

(2)构造函数

在这里插入图片描述

四、如何实现数组和List之间的转换

在这里插入图片描述
在这里插入图片描述

(1)数组转List集合

运行测试方法:
在这里插入图片描述
在这里插入图片描述
查看asList方法的源码:
在这里插入图片描述
数组通过asList方法传入后在内部创建了一个ArrayList集合,但是它并不是我们平时见到的ArrayList,而是当前Arrays类的一个内部类,并且调用了它的构造方法,将传入的数组赋值给a数组。
说明在该方法中只涉及到了对象的引用,并没有创建新对象,他们两个指向的是同一个地址值。

(2)List集合转数组

运行测试方法:
在这里插入图片描述
在这里插入图片描述
查看toArray方法的源码:
在这里插入图片描述
可以看到在arraycopy方法中将传入的a集合拷贝给了一个新的elementData数组,也就是复制数据到一个新的数组中,所以他们两个是不同的对象。

五、链表

(1)单项链表

在这里插入图片描述
在这里插入图片描述

①单向链表的时间复杂度分析
  1. 查询操作
    在这里插入图片描述
  2. 新增\删除操作
    在这里插入图片描述
(2)双向链表

在这里插入图片描述

①双向链表的时间复杂度分析

在这里插入图片描述

(3)总结

在这里插入图片描述

六、ArrayList和LinkedList的区别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以使用collections工具类并调用synchronizedList方法来包装集合,这样得到的List集合就是线程安全的,因为它在底层为该集合加上了一个锁,但是性能会下降一些。

总结:
在这里插入图片描述

相关文章:

  • HCIP【路由过滤技术(详解)】
  • 告别BeanUtils!MapStruct Plus快速入门与最佳实践
  • C++ —— 智能指针
  • PH热榜 | 2025-04-03
  • 流量特征分析-蚁剑流量分析
  • leetcode_数组 56. 合并区间
  • Pod控制器之deployment
  • 2025 ArkTS语言开发入门之前言(二)
  • nginx中地理位置访问控制模块geo
  • 2025年【山东省安全员C证】考试题及山东省安全员C证考试内容
  • 【算法】筛质数
  • FlashDB移植
  • Redis 热key问题怎么解决?
  • 计算机毕业设计指南
  • 开发指南111-关闭所有打开的子窗口
  • Spring 中有哪些设计模式?
  • python入门之从安装python及vscode开始
  • 功耗日志抓取需求
  • (六)安卓开发中的Activity的启动、关闭和生命周期详解
  • 目录遍历(Directory traversal)漏洞总结
  • 石碣网站建设/免费合作推广
  • 做独立电商网站/seo公司软件
  • 广州做网站 timhi/seo是什么意思中文翻译
  • 打电话推销做网站的是真的吗/百度关键词挖掘工具
  • 网站建设硬件设备/网络营销经典案例
  • 服装设计公司简介范文/网站seo快速优化