List知识总结

2023-10-27

ArrayList:

1  ArrayList扩容底层用到的是;System.arraycopy.
2  扩容的长度计算;int newCapacity = oldCapacity + (oldCapacity >> 1);,旧容量 + 旧容量右移1位,这相当于扩容为原
来容量的(int)3/2.
3  ArrayList<String> strings = new ArrayList<>(10);
没有数据填充时进行插入数据,list.add(2,2);会抛异常IndexOutOfBoundsException

LinkedList:

  三种插入方式:
  LinkedList<String> strings1 = new LinkedList<>(Arrays.asList("1"));
  LinkedList<String> strings2 = new LinkedList<>(Collections.nCopies(10, "1"));
  LinkedList<String> strings3 = new LinkedList<String>() {
      {
           add("1");
           add("3");
       }
   };

对比ArrayList和LinkedList:

1 头插:ArrayList需要做大量的位移和复制操作,耗时更长
2 尾插:ArrayList 尾插时,是不需要数据位移的,比较耗时的是数
据的扩容时,数据超过百万的时候尾插法LinkedList耗时更长,主要在创建节点上.
3 中间插入:Linkedlist在中间插入时,遍历寻找位置还是非常耗时了
  ArrayList可以使用copy-on-write技术来避免频繁的扩容和移动元素

List遍历5种方式:

1 普通for循环
2 增强for循环
   for (Integer itr : list) {
        xx += itr;
    }
3 迭代器
    Iterator<Integer> iterator = list.iterator();
    while (iterator.hasNext()) {
        Integer next = iterator.next();
        xx += next;
    }
4 foreach
  list.forEach(integer -> {
        xx += integer;
    });
5  stream
   list.stream().forEach(integer -> {
        xx += integer;
    });

在集合的首位有大量的插入、删除以及获取操作,那么可以使用LinkedList,
LinkedList的链表结构不一定会比ArrayList节省空间,首先它所占用的内存不是连续的,其次他还需要大量的实例化对象创造节点
综合来看,如果需要频繁进行随机访问元素的操作,或者对内存占用要求较高,那么应选择ArrayList。如果需要频繁进行插入或删除元素的操作,或者不需要随机访问元素,那么应选择LinkedList。

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

List知识总结 的相关文章

随机推荐

  • 基于python的在线考试系统-提供全套Python教学资源和考试系统,全力打造良心服务...

    原标题 提供全套Python教学资源和考试系统 全力打造良心服务 书名 Python程序设计基础 第2版 书号 9787302490562 出版单位 清华大学出版社 适用Python版本 Python 3 4 3 5 3 6 3 7以及更新
  • 计算机基础及ms office应用,计算机基础及MS Office应用知识

    NCRE考试实行百分制计分 但以等第通知考生成绩 等第共分优秀 及格 不及格三等 以下是关于计算机基础及MS Office应用知识 希望大家认真阅读 1 计算机网络与数据通信 人们对计算机网络提出了不同的定义 当前较为准确的定义为 以能够相
  • 空列表不等同于None

    ss if ss is not None print None1 ss None if ss is not None print None2 输出结果 None1
  • 编译libfcitxplatforminputcontextplugin.so解决Qt5在Linux上无法输入中文的问题

    环境 deepin 15 11 Qt 5 12 4 文中涉及到的Qt路径需要根据自己安装的版本自行更改 安装Git 获取fcitx qt5源码 sudo apt install git git clone http github com f
  • 卷积神经网络学习利器CNN Explainer

    CNN解说员 一个交互式可视化系统 旨在帮助非专家了解卷积神经网络 CNN 有关更多信息 请查看我们的手稿 CNN 解释器 通过交互式可视化学习卷积神经网络 Wang Zijie J Robert Turko Omar Shaikh Hae
  • 华为eNSP 三层交换机配置使用vlan及ospf通信

    实验拓扑图如下 提前配置好主机ip地址及端口ip地址 备注 接PC 路由器 服务器的接口一般用access LSW8三层交换机的配置 sysname LSW8 vlan batch 20 30 40 interface Vlanif1 in
  • 对于std::vector的等号重载操作符的理解

    1 对于case 1 赋值重载 比如当前的vector的allocator type是这样的 std allocator traits
  • VS2015+Qt5.9.1+Mysql5.7.25开发环境搭建

    VS2015 Qt5 9 1 Mysql5 7 25开发环境搭建 版本信息 版本 作者 时间 备注 v0 1 ZY 2019 3 2 初稿 目录 文章目录 VS2015 Qt5 9 1 Mysql5 7 25开发环境搭建 版本信息 目录 一
  • 机器学习:LDA_数学基础_2:贝叶斯数学:先验分布的选择

    先验信息确定先验分布 主观概率 对事件似然比 专家意见 历史资料 无信息先验分布 贝叶斯假设 离散均匀分布 有限区间的均匀分布 广义分布 共轭先验分布 在已知样本的情况下 为了理论的需要 常常选择参数的分布为共轭先验分布 最大熵先验分布 无
  • fork父子进程共享

    fork之后 子进程会拷贝父进程的数据空间 堆和栈空间 实际上是采用写时复制技术 二者共享代码段 所以在子进程中修改全局变量 局部变量 分配在堆上的内存同样也是 后 父进程的相同的全局变量不会改变 见下面代码分析 include
  • python3.6 print同一行覆盖打印

    1 python3 6中 print同一行覆盖打印可以这样使用 通用 print r object end flush True 例子 print r loss G 0 3f format loss G item end flush Tru
  • overleaf latex常用指令

    文字 bf 加粗 textit 斜体 emph 强调文本 另外 百分号 双引号 前双引号点两次 左上角1旁边的键 后双引号点两次 enter旁边的键 注意 这个符号 有时候可能是中文的 报错 上标 字母 上标 下标 字母 下标 表格 宏包
  • 7.11项目进度

    学习内容 AE课程一节 复习回顾AE课程并整理笔记 学习时间 上午8 00 11 00 下午3 00 5 00 遇到问题 在学习和制作作业的过程中 我发现自己存在严重的学习知识不牢固的问题 因此在今后学习中 我会增加课堂笔记这一学习内容 从
  • 记一次静态工具类单元测试用例

    代码中有用到自己创建的工具类BeanContext来获取当前上下文 以下是代码 package com sap calm imp ca ana da util import org springframework beans BeansEx
  • centos7使用说明

    说在前面 俗话说好记性不如烂笔头 考虑到每次安装部署都要各种查阅资料 很是不便 故决定重头开始安装一遍常用服务 作为以后的参照 第一步 确定发行版本 安装系统 首先明确自己需要的版本 本人不习惯桌面版 作为服务器 推荐熟悉命令行系统 毕竟效
  • 2020年的第二周

    2020年的第2周 2020年1月6日 2020年1月12日 上周和朋友出去聚餐 A说让我们带着她炒股 她赚点小钱 我说我在玩基金 赚了个几百 C说 他爸爸定投基金10年每个月3000才赚了五万 要就赚大钱 不搞这些基金 我们就聊啊聊 比如
  • 基于STM32和超声波模块的超声波测距,使用OLED显示距离和温度(附详细源代码)

    1 HC SR04模块介绍 HC SR04模块优势 此模块性能稳定 测度距离精确 模块高精度 盲区小 产品应用领域 1 机器人避障 2 物体测距 3 液位检测 4 公共安防 5 停车场检测 超声波测距模块工作原理 1 采用IO口TRIG触发
  • Autofac +webapi 配置

    Autofac配置 using Autofac using System using System Collections Generic using System Linq using System Reflection using Sy
  • mybatis日志打印大杀器

    文章目录 前言 MybatisLogFormat 选项一 选项二 缺点 Mybatis Log Free 总结 前言 各位精通CRUD的老司机 相信大家在工作中mybatis或者mybatisplus使用的肯定是比较多的 那么大家或多或少都
  • List知识总结

    ArrayList 1 ArrayList扩容底层用到的是 System arraycopy 2 扩容的长度计算 int newCapacity oldCapacity oldCapacity gt gt 1 旧容量 旧容量右移1位 这相当