List知识总结

ArrayList:

java 复制代码
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:

java 复制代码
  三种插入方式:
  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:

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

List遍历5种方式:

java 复制代码
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。

相关推荐
酷可达拉斯12 分钟前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
W6580341914 分钟前
2026年AI编程工具实测横评:Claude Code v2.1、Cursor 3.0、Trae SOLO、Copilot、Windsurf 谁更好用?
python·copilot·ai编程
snow@li25 分钟前
技术栈对应:Vue (前端) + SpringBoot (Java 后端) =》 Python 全场景配套
python
2501_9095091041 分钟前
DAY 28
开发语言·python
码云骑士1 小时前
71-Agent记忆系统-短期记忆-长期记忆-向量知识库三层架构
python·架构
卷无止境1 小时前
Python 的 exec 与 eval :动态代码执行的能力、风险与工程实践
后端·python
user-猴子1 小时前
从零构建 2048 游戏,解析“Python-Use”范式的完整闭环
开发语言·python·游戏
郝学胜_神的一滴1 小时前
Python 高级编程 025:二分利器bisect模块:优雅维系有序序列,极致优化检索性能
python·pycharm
小陈工1 小时前
第8篇:Flask轻量级框架与扩展生态深度解析(下)
后端·python·面试
这就是佬们吗1 小时前
Python入门③-运算符、条件与循环
开发语言·数据库·vscode·python·pycharm·编辑器