List集合详解

2023-10-28

目录

1、集合是什么?

1.1、集合与集合之间的关系

 2、List集合的特点

3、遍历集合的三种方式

3.1、foreach(增强佛如循环遍历)

3.2、for循环遍历

3.3、迭代器遍历

4、LinkedList和ArrayList的区别

4.1、为什么ArrayList查询会快一些?

4.2、为什么LinkedList查询会慢一些?

4.3总结--面试常问:

4.3.1、为什么linkedList查询会比Arraylist查询慢?

4.3.2、linkedlist集合和arraylist集合的区别

5、List调优:

5.1、集合的底层

5.2、ArrayList集合的动态扩容机制

5.2.1、触发扩容机制的条件

5.2.2、扩容的流程

5.3、如何进行性能调优呢?--面试常问

6、list集合底层对象去重原理

6.1、流程:


1、集合是什么?

1、简单来说,集合就是一个存放数据的容器,并且可以对存储的内容进行增删改查

2、集合的类型主要有三种

  • list集合
  • set集合
  • map集合

1.1、集合与集合之间的关系

 2、List集合的特点

1、有序

2、可以重复

3、具备容器的基本特点,可以进行增删改查

3、遍历集合的三种方式

3.1、foreach(增强佛如循环遍历)


   
   
  1. // foreach(增强for循环)
  2. for (Object object : list) {
  3. System.out.println(object);
  4. }

3.2、for循环遍历


   
   
  1. // for循环遍历
  2. for ( int i = 0; i < list.size(); i++) {
  3. System.out.println(list.get(i));
  4. }

3.3、迭代器遍历


   
   
  1. // 迭代器
  2. Iterator iterator = list.iterator();
  3. while (iterator.hasNext()) {
  4. System.out.println(iterator.next());
  5. }

4、LinkedList和ArrayList的区别

  • LinkedList的特点:修改查询慢,新增删除快

  • arraylist集合的特点:修改查询快,新增删除慢

    为什么新增删除ArrayList会慢些?

    java集合框架05——ArrayList和LinkedList的区别_旷野之息的博客-CSDN博客

4.1、为什么ArrayList查询会快一些?

ArrayList 是基于数组实现的动态数组,它支持随机访问,可以根据元素的下标快速访问对应元素。具体来说,它内部维护了一个数组,通过索引访问数组元素的时间复杂度为 O(1)。因此 ArrayList 最适合读操作比较频繁的场景。

  ArrayList从原理上就是数据结构中的数组,也就是内存中一片连续的空间,这意味着,当我
 get(index)的时候,我可以根据数组的(首地址+偏移量),直接计算出我想访问的第index个元素在内存中的位置。

4.2、为什么LinkedList查询会慢一些?

LinkedList 是基于链表实现的,它是一个双向链表,每个节点都有指向前驱节点和后继节点的引用

LinkedList 不支持随机访问,因为它是基于链表数据结构实现的,而链表与数组不同,没有类似于数组的下标操作。

在链表中,每个元素通过指针连接到下一个元素,因此查询链表中的某个元素时,需要从链表的头部或尾部开始遍历,逐个比较元素的值,直到找到所需的元素。

这样的查询方式,与使用数组下标直接查找元素相比,时间复杂度要高很多

4.3总结--面试常问:

4.3.1、为什么linkedList查询会比Arraylist查询慢?

答:首先呢,arraylist他的底层的数据结构呢是一个数组,因为是数组,我们就可以直接的使用数组的get(index)方法直接的获取到数组中的元素,不需要进行遍历就可以拿到数组中的元素,但是linkedlist呢它的底层数据结构是一个双向的链表,而链表结构无法和数组一样通过get(index)直接获取到元素,只能够通过遍历去挨个查找,但是这样不仅使用了更多的资源以及更多的时间,虽然 LinkedList 不支持随机访问,但是它提供了一些查询元素的方法,比如 getFirst()、getLast()、indexOf()、lastIndexOf(),它们会沿着链表进行查询,直到找到对应的元素或者到达链表的末尾。

4.3.2、linkedlist集合和arraylist集合的区别

答:首先这两个集合的最本质上的区别就是两者的底层的数据结构是不同的,而数据结构的不同从而也导致了,两者增删改查效率的一些不同,首先arraylist集合它的特点就是,查询修改快,新增删除慢,因为是数组结构嘛,所以导致了只要在一个指定位置一移除或者增加了一条数据,那么整个数组这条数据后面的所有的数据都会进行移动,是非常耗费资源的,但是linkedlist呢他的底层就是一个链表结构,这种结构有个好处,就是移除了集合中的某个元素只需要改变那个元素的前驱节点和后继节点的指向就可以了,所以效率非常的快

查询的话我就不讲了刚刚问过了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

List集合详解 的相关文章

  • 检查列表是否已排序的 Pythonic 方法

    有没有一种Python式的方法来检查列表是否已经排序ASC or DESC listtimestamps 1 2 3 5 6 7 就像是isttimestamps isSorted 返回True or False 我想输入一些消息的时间戳列
  • 多个列表和大小的所有可能排列

    在 python 中使用以下命令很容易计算简单的排列itertools permutations https docs python org 3 library itertools html itertools permutations 你
  • 计算列表的累积和,直到出现零

    我有一个 长 列表 其中随机出现零和一 list a 1 1 1 0 1 1 0 1 0 1 1 1 我想获取 list b 列表中出现 0 之前的总和 出现0的地方 在列表中保留0 list b 1 2 3 0 1 2 0 1 0 1 2
  • 从字符串数组中删除项目

    我有一个包含如下数据的数据库字段 76 60 12 例如 如果我想删除60 我该怎么办 要删除的号码可以是任何地方 如果需要的话 我还需要删除逗号 我正在使用 NET 2 0 我会用逗号分割字符串 删除元素 然后再次连接字符串 希望这一切都
  • 根据前 2 个元素从嵌套列表中删除重复项

    仅当前两个元素相同时 我才尝试从嵌套列表中删除重复项 而忽略第三个元素 List L el1 el2 value1 el3 el4 value2 el1 el2 value2 el1 el5 value3 将返回 L el3 el4 val
  • JSON 列表中元素的顺序是否保留?

    我注意到 JSON 对象中元素的顺序不是原始顺序 JSON 列表的元素怎么样 他们的秩序是否得到维持 是的 JSON 数组中元素的顺序会被保留 从RFC 7159 JavaScript 对象表示法 JSON 数据交换格式 https www
  • 在 python 中高效、快速地迭代元组列表中超过 3600 万个项目

    首先 在任何人将其标记为重复之前 请阅读以下内容 我不确定迭代的延迟是否是由于尺寸巨大或我的逻辑造成的 我有一个必须迭代的用例3600 万件商品在元组列表中 我的主要要求是速度和效率 样本清单 how are you I am fine h
  • Java 8 Streams - 嵌套映射到列表

    firstlist stream map x gt return secondList stream map y gt return a string collect Collectors toList Output I need Get
  • 在 Python 中获取数组作为 GET 查询参数

    我知道在 php 中我可以使用 GET key1 key2 检索以数组形式发送的 GET 数据 但这在 Python 中是可能的 因为我只收到一个字符串 但它不被识别为数组 列表 如果重要的话我使用flask werkzeug 参数名称的深
  • 如何访问数据框中的一行嵌套字典

    我有一个 json 文件 如下所示 file name main question no Q 1 question what is answer user John comment It is defined as value number
  • 查找字典中列表的最大值

    我有一个字典 每个键后面都有一个存储的列表 看起来像这样 dict with values u New York u New York u NY datetime datetime 2014 8 13 0 0 10 u New York u
  • 将嵌套列表转换为嵌套列表

    我知道可以将项目列表从一种类型转换为另一种类型 但是如何将嵌套列表转换为嵌套 List 已经尝试过的解决方案 List
  • 将其元素添加到另一个列表后清除列表

    我正在做一个程序 它获取更多句子作为参数 我制作了 2 个列表 一个称为 propozitie 其中包含每个句子 另一个称为 propozitii 其中包含所有句子 问题是 当我在遇到 后清除 propozitie 列表时 它也会清除 pr
  • java交叉连接两个列表

    我有一个 ABC 类 其中包含两个整数字段 public class ABC private Integer x private Integer y getters and setters 我有两个列表 xValues 和 yValues
  • 将一个列表(n 元组或列表)与另一个列表(也可以是数组)缩放的惯用 F# 方法是什么?

    Given let weights 0 5 0 4 0 3 let X 2 3 4 7 3 2 5 3 6 我想要的是 wX 0 5 2 3 4 0 4 7 3 2 0 3 5 3 6 我想知道一种使用列表和数组来执行此操作的优雅方法 欢迎
  • 使用 Beautifulsoup 抓取多个网站

    我想知道为什么列出all links and all titles不想接收列表中的任何记录titles and links 我也尝试过 extend 方法 但没有帮助 import requests from bs4 import Beau
  • Python 3 列表列表中的列表理解以转换类型

    考虑以下列表 list1 1 1 1 2 1 3 2 1 2 2 2 3 要理解字符串列表并将其转换为浮点数 可以使用 list1 0 float i for i in list1 0 但我尝试理解浮点数列表的列表并没有完全起作用 list
  • 查找嵌套列表中元素的索引?

    我有一个类似的列表 mylist lt list a 1 b list A 1 B 2 c list C 1 D 3 是否有一种 无循环 方法来识别元素的位置 例如如果我想用 5 替换 C 的值 并且在哪里找到元素 C 并不重要 我可以这样
  • 如何将列表列表写入 CSV 文件 Python?

    我有一个列表 例如 a b c d e f 我想将其写入 CSV 文件 如下所示 a b c d e f 我怎么做 我尝试过使用 csv writerows 但输出文件的每个字符位于不同的单元格中 并且全部位于同一行中 从某种意义上说 第一
  • 数组与列表的性能

    假设您需要一个需要频繁迭代的整数列表 数组 我的意思是非常频繁 原因可能有所不同 但可以说它位于大容量处理的最内层循环的核心 一般来说 人们会选择使用列表 List 因为它们的大小具有灵活性 最重要的是 msdn 文档声称列表在内部使用数组

随机推荐

  • STM32F103的低功耗模式

    一 原理 STM32F103的低功耗模式有多种 常用的有STOP模式和STANDBY模式 这两种模式都可以有效降低芯片的功耗 特别是在电池供电的场景下 可以延长电池寿命 STOP模式 主要关闭CPU SRAM和Flash时钟 只保留少数必要
  • STM32一键下载电路程序下载后不运行问题分析

    使用STM32常用的下载方法主要有以下几种 1 ISP程序下载 使用STM32的串口1进行程序下载 使用该方式下载需要使用USB转串口芯片 常用的芯片如CH340G 该方式的程序下载需要使用上位机FlyMcu 上位机的设置出错很容易导致程序
  • mac 系统下通过docker 运行mysql

    mac 系统下通过docker 运行mysql 创建网络 mysql 安装 执行相关代码 配置参数 workspace docker mysql conf my cnf 启动 创建网络 docker network create dev n
  • Error creating bean with name ‘dataSource‘ Cannot load driver class: com.mysql.cj.jdbc.Driver

    最近写代码碰到一个关于jdbcTemplate的相关问题 因为项目的需求所以需要将程序打包成jar包去公司内网堡垒机运行 一直碰到一个与jdbcTemplate相关的问题 最后这个问题归结到 org springframework bean
  • 怎样制作网页

    制作网页可以通过以下步骤来完成 首先 你需要学习 HTML HyperText Markup Language 和 CSS Cascading Style Sheets 这两种编程语言 HTML 用来描述网页的结构和内容 CSS 用来控制网
  • 动态规划(钢条切割问题 Java/Python/Golang)

    问题描述 引用算法导论描述 给定一段长度为n英寸的钢条 一个整型 和一个价格表p 一个数组 求钢条最优切割方案 使得销售的收益最大 如果n英寸的钢条的价格p n 足够大 那么钢条有可能不需要切割 Java版本 原始版 原始求解方法 para
  • 细数【SD-WEBUI】的模型:谁是最适合的模型&从哪里找到它们

    文章目录 零 前言 一 基础模型 Stable Diffusion模型 1 1 ChilloutMix 仿真 1 2 BasilMix 仿真 1 3 BeautyProMix 仿真 1 4 ChikMix 仿真 1 5 Dalcefo Re
  • Java反序列化漏洞——jdbc反序列化漏洞利用

    漏洞原理 如果攻击者能够控制JDBC连接设置项 那么就可以通过设置其指向恶意MySQL服务器进行ObjectInputStream readObject 的反序列化攻击从而RCE 具体点说 就是通过JDBC连接MySQL服务端时 会有几个内
  • 一个大型网站需多少台服务器?

    首先要明白 这个问题不容易量化 影响一个大型网站所需服务器数量的因素很多 对于最基础的网站源代码 如果一个技术高超的程序员能实现最好的算法 那么几台服务器就能完成一个拥有数千万并发量的网站 相反 对于低水平的程序员来说 即使几十万台服务器也
  • 数据库系统基本论述

    一 常用术语及其基本概念 数据 data 描述事物的符号记录 数字 文字 图形 图像 音频 视频 数据库 DataBase DB 长期存储在计算机内 有组织的 可共享的大量数据的集合 数据库管理系统 DataBase Management
  • huggingface transformers包 文档学习笔记(持续更新ing...)

    诸神缄默不语 个人CSDN博文目录 本文系huggingface Hugging Face The AI community building the future 旗下Python包transformers 文档 Transformers
  • Sqlmap使用-盲注小实验

    目录 sqlmap简介 基本格式 sqlmap详细命令 Options 选项 Target 目标 Request 请求 Enumeration 枚举 Optimization 优化 Injection 注入 Detection 检测 Tec
  • QT的刷新机制,有时会不刷新的bug解决办法

    重写showEvent函数 void showEvent QShowEvent e this gt setAttribute Qt WA Mapped QWidget showEvent e
  • python学习——Python2与Python3共存

    上篇 https blog csdn net qq 42489308 article details 97644669 困扰 最近被一个问题困扰了很久 就是Python2和Python3共存pip的使用问题 本来是一个很简单的问题 但是我的
  • eureka 的几种主动下线服务的方式

    补充 在启动eureka服务的时候发现控制台有以下的输出 由此猜想可以通过改接口下线服务 于是尝试了一下 果然能从注册中心中移除该实例 1 直接停掉服务 默认情况下 如果Eureka Server在90秒没有收到Eureka客户的续约 它会
  • cs怎么联机,内外网p2p联机的实现

    cs是个一直HOP的游戏 笔者就是一个CS迷 CS局域网联机或许大家都会 如何内外网与外网联机游戏呢 如学校内网宿舍 与办公室基友 如何进行联机玩 可以利用nat123全端口映射p2p联机 在任何网络环境下实现跨网游戏联机 实现过程 1 在
  • 【Flutter 3-4】Flutter进阶教程——数据持久化sqflite使用

    作者 弗拉德 来源 弗拉德 公众号 fulade me sqflite 数据持久化是在移动端开发中必不可少的技术手段 我们总是有一些用户信息 应用资源 列表数据等需要存储起来 这里我们主要来讲基于SQLite数据库的数据储存 SQLite
  • freemarker截取字符串subString()

    freemarker截取字符串subString 的二种用法 freemarker截取字符串其实和JAVA语法是差不多了 也有substring 方法 如代码 lt assign content root keyWord gt conten
  • Mysql——存储引擎

    一 MySQL体系结构 二 存储引擎 一 概念 MySQL中的数据用各种不同的技术存储在文件或内存中 这些技术中的每一个技术使用不同的存储机制 索引技巧 锁定水平 最终提供不同的功能和能力 通过选择不同的技术 能够获得额外的速度或者功能 从
  • List集合详解

    目录 1 集合是什么 1 1 集合与集合之间的关系 2 List集合的特点 3 遍历集合的三种方式 3 1 foreach 增强佛如循环遍历 3 2 for循环遍历 3 3 迭代器遍历 4 LinkedList和ArrayList的区别 4
Powered by Hwhale