ArrayList和LinkedList该如何选择? --《JAVA编程思想》 70

【2021最新版】Java基础面试题总结(70道题含答案解析) 文章目录Java集合/泛型面试题1、ArrayList和linkedList的区别2、 HashMap和HashTable的区别3、Collection包结构,与Collections的区别4、泛型常用特点(待补充)5、说说List、Set、Map、三者的区别?6、Array与ArrayList有什么不一样?7、Map有什么特点?8、集合类存放于Java.util包中,主要有几种接口?9、什么是list接口10、说说ArrayList(数组)11、Vector(数组实现、 线程同步)12、说说LinkLis 阅读详情

我们在实现 List 时,通常会考虑使用 ArrayList 和 LinkedList ,Vector 属于遗留代码类库,已不推荐使用。

下面,我们将以 List 的各种常用操作作为测试指标,验证 ArrayList 和 LinkedList 两者的性能指标。

0.准备工作

在此之前,先定义好测试模板,更好的帮助我们编写测试代码;

ContainerTest 为一个通用的测试基类,用泛型来兼容 ArrayList 和 LinkedList;再定义抽象方法 test(),便于我们自定义各种需要测试的方法。

public abstract class ContainerTest<T extends List> {

    private T list;


    public abstract long test();

    public ContainerTest(T list) {
        this.list = list;
    }

    public T getList() {
        return list;
    }

    public void setList(T list) {
        this.list = list;
    }
    
}

与此同时,拥有一个生成测试数据的工具类 InitIntegerList 也是相当的有必要;

public class InitIntegerList {

    public static <T extends List> T initList(T list, int size) {
        list.clear();
        for (int i = 0; i < size; i++) {
            list.add(i);
        }
        return list;
    }

}

接下来,编写提供各种测试功能 ListPerformanceTest 工具类。其中 initList() 用于生成测试数据;displayHead() 打印测试信息的表头;

public class ListPerformanceTest {


    public static <T extends List> T initList(T list, int size) {
        List initList = InitIntegerList.initList(list, size);
        list.addAll(initList);
        return list;
    }

    public static <T> void displayHead(T t, String methodName) {
        System.out.println(t.getClass().getSimpleName() + "\t" + methodName);
        System.out.println("集合长度\t操作次数\t平均时间");
    }

后续编写的方法都是在 ListPerformanceTest 内运行,重复的部分不再贴出来了。每次执行测试方法后,打印方法执行次数、集合长度、平均操作时间作为参考,在随机测试方面,指定 Random 随机种子,保证每次随机取得元素的一致性。

1.顺序添加

    /**
     *
     * @param list 测试容器
     * @param loops 循环次数
     * @param <T> 指定继承自 List 的泛型
     */
   public static <T extends List> void add(T list, int loops) {
        ContainerTest<T> testList = new ContainerTest<T>(list) {
            @Override
            public long test() {
                long startTime = System.nanoTime();
                T t = getList();
                for (int i = 0; i < loops; i++) {
                    t.add(i);
                }
                return System.nanoTime() - startTime;
            }
        };
        long operateTime = testList.test();
        long avg = operateTime / loops;
        System.out.println(list.size() + "\t" + loops + "\t" + avg);
    }

    public static void main(String[] args) {
        Integer[] integers = {10000, 30000, 50000};
        ArrayList<Integer> arrayList = new ArrayList<>();
        displayHead(arrayList, "顺序添加");
        for (int i = 0; i < integers.length; i++) {
            add(arrayList, integers[i]);
        }
        System.out.println();
        LinkedList<Integer> linkedList = new LinkedList<>();
        displayHead(linkedList, "顺序添加");
        for (int i = 0; i < integers.length; i++) {
            add(linkedList, integers[i]);
        }
    }
ArrayList	顺序添加
集合长度	操作次数	平均时间
10000	10000	149
40000	30000	70
90000	50000	51

LinkedList	顺序添加
集合长度	操作次数	平均时间
10000	10000	60
40000	30000	31
90000	50000	27

2.中部添加

    /**
     *
     * @param list 测试容器
     * @param loops 循环次数
     * @param size 集合长度
     * @param <T> 指定继承自 List 的泛型
     */
    public static <T extends List> void addHalf(T list, int loops, int size) {
        ContainerTest<T> testList = new ContainerTest<T>(list) {
            @Override
            public long test() {
                long startTime = System.nanoTime();
                T t = getList();
                for (int i = 0; i < loops; i++) {
                    t.add(size / 2, i);
                }
                return System.nanoTime() - startTime;
            }
        };
        long operateTime = testList.test();
        long avg = operateTime / loops;
        System.out.println(size + "\t" + loops + "\t" + avg);
    }


    public static void main(String[] args) {
        Integer[][] integers = {{100, 10000}, {200, 30000}, {300, 50000}};
        ArrayList<Integer> arrayList = new ArrayList<>();
        displayHead(arrayList, "中部添加");
        for (int i = 0; i < integers.length; i++) {
            arrayList = initList(new ArrayList(), integers[i][1]);
            addHalf(arrayList, integers[i][0], integers[i][1]);
        }
        System.out.println();
        LinkedList<Integer> linkedList = new LinkedList<>();
        displayHead(linkedList, "中部添加");
        for (int i = 0; i < integers.length; i++) {
            linkedList = initList(new LinkedList(), integers[i][1]);
            addHalf(linkedList, integers[i][0], integers[i][1]);
        }
    }

ArrayList	中部添加
集合长度	操作次数	平均时间
10000	100	2061
30000	200	5779
50000	300	5098

LinkedList	中部添加
集合长度	操作次数	平均时间
10000	100	17215
30000	200	30818
50000	300	32258

3.头部添加

    /**
     *
     * @param list 测试容器
     * @param loops 循环次数
     * @param size 集合长度
     * @param <T> 指定继承自 List 的泛型
     */
    public static <T extends List> void addHead(T list, int loops, int size) {
        ContainerTest<T> testList = new ContainerTest<T>(list) {
            @Override
            public long test() {
                long startTime = System.nanoTime();
                T t = getList();
                for (int i = 0; i < loops; i++) {
                    t.add(0, i);
                }
                return System.nanoTime() - startTime;
            }
        };
        long operateTime = testList.test();
        long avg = operateTime / loops;
        System.out.println(size + "\t" + loops + "\t" + avg);
    }

    public static void main(String[] args) {
        Integer[][] integers = {{100, 10000}, {200, 30000}, {300, 50000}};
        ArrayList<Integer> arrayList = new ArrayList<>();
        displayHead(arrayList, "头部添加");
        for (int i = 0; i < integers.length; i++) {
            arrayList = initList(new ArrayList(), integers[i][1]);
            addHead(arrayList, integers[i][0], integers[i][1]);
        }
        System.out.println();
        LinkedList<Integer> linkedList = new LinkedList<>();
        displayHead(linkedList, "头部添加");
        for (int i = 0; i < integers.length; i++) {
            linkedList = initList(new LinkedList(), integers[i][1]);
            addHead(linkedList, integers[i][0], integers[i][1]);
        }
    }
ArrayList	头部添加
集合长度	操作次数	平均时间
10000	100	4900
30000	200	11711
50000	300	10227

LinkedList	头部添加
集合长度	操作次数	平均时间
10000	100	419
30000	200	517
50000	300	274

4.随机添加

    /**
     *
     * @param list 测试容器
     * @param loops 循环次数
     * @param size 集合长度
     * @param <T> 指定继承自 List 的泛型
     */
    public static <T extends List> void addRandom(T list, int loops, int size) {
        ContainerTest<T> testList = new ContainerTest<T>(list) {
            @Override
            public long test() {
                Random random = new Random(47);
                long startTime = System.nanoTime();
                T t = getList();
                for (int i = 0; i < loops; i++) {
                    t.add(random.nextInt(size), i);
                }
                return System.nanoTime() - startTime;
            }
        };
        long operateTime = testList.test();
        long avg = operateTime / loops;
        System.out.println(size + "\t" + loops + "\t" + avg);
    }
    
    public static void main(String[] args) {
        Integer[][] integers = {{100, 10000}, {200, 30000}, {300, 50000}};
        ArrayList<Integer> arrayList = new ArrayList<>();
        displayHead(arrayList, "随机添加");
        for (int i = 0; i < integers.length; i++) {
            arrayList = initList(new ArrayList(), integers[i][1]);
            addRandom(arrayList, integers[i][0], integers[i][1]);
        }
        System.out.println();
        LinkedList<Integer> linkedList = new LinkedList<>();
        displayHead(linkedList, "随机添加");
        for (int i = 0; i < integers.length; i++) {
            linkedList = initList(new LinkedList(), integers[i][1]);
            addRandom(linkedList, integers[i][0], integers[i][1]);
        }
    }
ArrayList	随机添加
集合长度	操作次数	平均时间
10000	100	3934
30000	200	6010
50000	300	6568

LinkedList	随机添加
集合长度	操作次数	平均时间
10000	100	12981
30000	200	15777
50000	300	17045

5.迭代遍历

    /**
     *
     * @param list 测试容器
     * @param size 集合长度
     * @param <T> 指定继承自 List 的泛型
     */
    public static <T extends List> void iter(T list, int size) {
        ContainerTest<T> testList = new ContainerTest<T>(list) {
            @Override
            public long test() {
                long startTime = System.nanoTime();
                T t = getList();
                ListIterator listIterator = t.listIterator();
                while (listIterator.hasNext()) {
                    listIterator.next();
                }
                return System.nanoTime() - startTime;
            }
        };
        long operateTime = testList.test();
        long avg = operateTime / size;
        System.out.println(size + "\t" + size + "\t" + avg);
    }

    public static void main(String[] args) {
        Integer[] integers = {10000, 30000, 50000};
        ArrayList<Integer> arrayList = new ArrayList<>();
        displayHead(arrayList, "迭代遍历");
        for (int i = 0; i < integers.length; i++) {
            arrayList = initList(arrayList, integers[i]);
            iter(arrayList, integers[i]);
        }
        System.out.println();
        LinkedList<Integer> linkedList = new LinkedList<>();
        displayHead(linkedList, "迭代遍历");
        for (int i = 0; i < integers.length; i++) {
            linkedList = initList(linkedList, integers[i]);
            iter(linkedList, integers[i]);
        }
    }
ArrayList	迭代遍历
集合长度	操作次数	平均时间
10000	10000	108
30000	30000	57
50000	50000	37

LinkedList	迭代遍历
集合长度	操作次数	平均时间
10000	10000	72
30000	30000	11
50000	50000	12

6.随机访问

    /**
     *
     * @param list 测试容器
     * @param loops 循环次数
     * @param size 集合长度
     * @param <T> 指定继承自 List 的泛型
     */
    public static <T extends List> void get(T list, int loops, int size) {
        ContainerTest<T> testList = new ContainerTest<T>(list) {
            @Override
            public long test() {
                long startTime = System.nanoTime();
                T t = getList();
                Random random = new Random(47);
                for (int i = 0; i < loops; i++) {
                    t.get(random.nextInt(size));
                }
                return System.nanoTime() - startTime;
            }
        };
        long operateTime = testList.test();
        long avg = operateTime / loops;
        System.out.println(size + "\t" + loops + "\t" + avg);
    }

    public static void main(String[] args) {
        Integer[][] integers = {{100, 10000}, {200, 30000}, {300, 50000}};
        ArrayList<Integer> arrayList = new ArrayList<>();
        displayHead(arrayList, "随机访问");
        for (int i = 0; i < integers.length; i++) {
            arrayList = initList(new ArrayList(), integers[i][1]);
            get(arrayList, integers[i][0], integers[i][1]);
        }
        System.out.println();
        LinkedList<Integer> linkedList = new LinkedList<>();
        displayHead(linkedList, "随机访问");
        for (int i = 0; i < integers.length; i++) {
            linkedList = initList(new LinkedList(), integers[i][1]);
            get(linkedList, integers[i][0], integers[i][1]);
        }
    }
ArrayList	随机访问
集合长度	操作次数	平均时间
10000	100	3327
30000	200	494
50000	300	98

LinkedList	随机访问
集合长度	操作次数	平均时间
10000	100	13331
30000	200	18803
50000	300	16241

7.随机更新

    /**
     *
     * @param list 测试容器
     * @param loops 循环次数
     * @param size 集合长度
     * @param <T> 指定继承自 List 的泛型
     */
    public static <T extends List> void set(T list, int loops, int size) {
        ContainerTest<T> testList = new ContainerTest<T>(list) {
            @Override
            public long test() {
                long startTime = System.nanoTime();
                T t = getList();
                Random random = new Random(47);
                for (int i = 0; i < loops; i++) {
                    t.set(random.nextInt(size), i);
                }
                return System.nanoTime() - startTime;
            }
        };
        long operateTime = testList.test();
        long avg = operateTime / loops;
        System.out.println(size + "\t" + loops + "\t" + avg);
    }

    public static void main(String[] args) {
        Integer[][] integers = {{100, 10000}, {200, 30000}, {300, 50000}};
        ArrayList<Integer> arrayList = new ArrayList<>();
        displayHead(arrayList, "随机更新");
        for (int i = 0; i < integers.length; i++) {
            arrayList = initList(new ArrayList(), integers[i][1]);
            set(arrayList, integers[i][0], integers[i][1]);
        }
        System.out.println();
        LinkedList<Integer> linkedList = new LinkedList<>();
        displayHead(linkedList, "随机更新");
        for (int i = 0; i < integers.length; i++) {
            linkedList = initList(new LinkedList(), integers[i][1]);
            set(linkedList, integers[i][0], integers[i][1]);
        }
    }

ArrayList	随机更新
集合长度	操作次数	平均时间
10000	100	4996
30000	200	538
50000	300	197

LinkedList	随机更新
集合长度	操作次数	平均时间
10000	100	14090
30000	200	15057
50000	300	16582

8.随机移除

    /**
     *
     * @param list 测试容器
     * @param loops 循环次数
     * @param size 集合长度
     * @param <T> 指定继承自 List 的泛型
     */
    public static <T extends List> void remove(T list, int loops, int size) {
        ContainerTest<T> testList = new ContainerTest<T>(list) {
            @Override
            public long test() {
                long startTime = System.nanoTime();
                T t = getList();
                Random random = new Random(47);
                for (int i = 0; i < loops; i++) {
                    t.remove(random.nextInt(size - loops));
                }
                return System.nanoTime() - startTime;
            }
        };
        long operateTime = testList.test();
        long avg = operateTime / loops;
        System.out.println(size + "\t" + loops + "\t" + avg);
    }

    public static void main(String[] args) {
        Integer[][] integers = {{100, 10000}, {200, 30000}, {300, 50000}};
        ArrayList<Integer> arrayList = new ArrayList<>();
        displayHead(arrayList, "随机移除");
        for (int i = 0; i < integers.length; i++) {
            arrayList = initList(new ArrayList(), integers[i][1]);
            remove(arrayList, integers[i][0], integers[i][1]);
        }
        System.out.println();
        LinkedList<Integer> linkedList = new LinkedList<>();
        displayHead(linkedList, "随机移除");
        for (int i = 0; i < integers.length; i++) {
            linkedList = initList(new LinkedList(), integers[i][1]);
            remove(linkedList, integers[i][0], integers[i][1]);
        }
    }
ArrayList	随机移除
集合长度	操作次数	平均时间
10000	100	6140
30000	200	6284
50000	300	6349

LinkedList	随机移除
集合长度	操作次数	平均时间
10000	100	11941
30000	200	20445
50000	300	16182

9.测试结果汇总

测试项目ArrayListLinkedList
顺序添加低高
中部添加高低
头部添加低高
随机添加高低
迭代遍历低高
随机访问高低
随机更新高低
随机移除高低

ArrayList 底层为数组结构,故其随机访问性能高;LinkedList 为双向链表结构,拥有良好的伸缩拓展性,当在遍历和向首尾两端拓展时,性能优于 ArrayList 。


本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。

若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!

ArrayList vs LinkedList:到底谁才是你的“梦中情链”? 哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 阅读详情

相关推荐

测试ArrayList和LinkedList的add方法

测试ArrayList和LinkedList的add方法

ArrayList 和 LinkedList 之间应该怎么选择?

Joshua Bloch:我写了 LinkedList,但我自己都不用!对,Joshua Bloch 就是 LinkedList 的作者!如果你真信了作者的话,那就真的大错特错了,LinkedList 虽然用的没有 ArrayList 多,但使用它的地方可不少。我在的引用的第三方依赖中,随便搜了一下引用,好多好多地方在用呢,比如说大名鼎鼎的 Jackson。所以,遇到一个问题,比如说:ArrayList 和 LinkedList 之间应该怎么选择?

沉默王二 1599

当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮

今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。感兴趣的朋友跟随小编一起看看吧

ArrayList与LinkedList的选择

一、区别 以下源码均来自 jdk 1.8 1、arraylist源码分析 arraylist构造方法 如下: public ArrayList(int initialCapacity) { //指定初始化大小 if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.ele

weixin_46415189的博客 556

研一脑电小白日记 之 EEGLAB预处理实战指南

本文为脑电研究新手提供了一份详尽的EEGLAB预处理实战指南。从MATLAB与EEGLAB环境搭建、使用NeuracleEEGFileReader插件导入BDF格式数据开始,逐步讲解了电极定位、滤波、降采样、ICA去伪迹等核心步骤,旨在帮助初学者高效完成脑电数据预处理,为后续分析奠定坚实基础。

weixin_29230649的博客 556

何恺明团队MeanFlow论文解读:单步生成模型如何实现ImageNet 256×256的SOTA效果?

何恺明团队提出的MeanFlow框架在生成式AI领域实现重大突破,通过引入平均速度场概念,在ImageNet 256×256数据集上达到单步生成3.43 FID的SOTA效果。该技术解决了传统Flow Matching方法的积分误差累积问题,显著提升生成效率与质量,为AI图像生成应用开辟新方向。

weixin_30687051的博客 397

逼着面试官问了我ArrayList和LinkedList的区别,他对我彻底服了

ArrayList 在新增和删除元素时,因为涉及到数组复制,所以效率比 LinkedList 低,而在遍历的时候,ArrayList 的效率要高于 LinkedList

沉默王二 1万+

手把手教你搞定爱思唯尔LaTeX投稿:从模板到PDF生成的全流程避坑指南

本文详细介绍了使用LaTeX投稿爱思唯尔期刊的全流程避坑指南,包括模板选择、文件结构规范、投稿系统文件上传策略、PDF生成与检查等关键步骤。特别强调了避免常见错误如宏包冲突、图片丢失和参考文献问题,并提供了投稿后的应急方案和高阶自动化校验脚本,帮助研究者顺利完成投稿。

weixin_42525289的博客 508

Java 集合入门:ArrayList 和 LinkedList 怎么选

接口的实现,但底层数据结构和性能特性不同。选择哪个取决于具体应用场景。下面我将逐步解释它们的区别、优缺点,并给出选择建议。本文基于 Java 标准库知识,确保内容真实可靠。在 Java 集合框架中,ArrayList 和 LinkedList 都是。以下 Java 代码展示基本用法,但实际选择应基于上述分析。

2501_93895174的博客 341

【近源攻击】badusb制作

BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID(Human InterfaceDevice)设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。BadUsb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

qinjilll的博客 2549

python 识别滑块验证码

博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas...

2102

java基础:ArrayList与LinkedList深度对比:从底层原理到实战抉择

ArrayList与LinkedList作为Java集合框架中List接口的两大核心实现,长期以来是面试中的高频考点,也是实际开发中最易混淆的选择。两者看似都能完成元素的有序存储,但其底层设计哲学和性能特性却有着天壤之别。对于资深Java工程师而言,理解它们的本质差异不仅是应对面试的基础,更是编写高性能代码的前提。本文将从数据结构、操作机制、实战选型三个维度,全方位解析这两个集合类的核心区别。

weixin_43290370的博客 825

Comsol&Matlab 亥姆霍兹共振消声器传递损失理论解与仿真解

当外界噪声以共振频率进入共振器时,共振器内的空气质量发生周期性的振动,从而减少或消除噪声。当特定频率的声波进入共振器时,共振器的空气质量会发生周期性的振动,从而实现对该频率的噪声的减弱或消除。5. 反射和吸收:共振器的几何形状和容积还可以影响共振器内空气振动的反射和吸收。然而,对于不同频率的噪声,需要相应调整共振器的参数以匹配新的共振频率。3. 腔体内的空气振动:当特定频率的声波进入共振器时,共振器内的空气质量会发生振动。2. 声波进入共振器:外界的声波通过共振器的颈部进入共振器的封闭空腔。

声学黑洞仿真工作室 4575

基于Java的ArrayList和LinkedList的实现与总结

一、定义MyList接口,包含列表常见方法: 1 import java.util.Iterator; 2 3 /** 4 * 线性表(列表)的接口定义 5 */ 6 public interface MyList<T> extends Iterator<T> { 7 8 /** 新增一个元素 */ 9 ...

weixin_30508241的博客 241

Flutter 完整学习文档 - 从入门到精通

Widget 就像乐高积木,Flutter 中所有的东西都是 Widget。一个按钮是 Widget,一段文字是 Widget,甚至布局、边距、对齐方式也是 Widget!"万物皆 Widget"

zwjapple的专栏 2316

信贷风控分析—征信数据源

详解企业和个人征信报告,以及信贷风控之指标构造案例参考

csdnbt的博客 3628

集合框架一(ArrayList和LinkedList)

如果不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象————————可以使用java集合框架; java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.utal包中。 List接口存储一组不唯一,有序(插入顺序)的对象 Set接口存储一组唯一,无序的对象; Map接口存储一组键值对象,提供key到value的映射; (1)ArrayList类: ArrayL...

匿名攻城狮 718

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

关于ArrayList和LinkedList的插入,遍历,删除时间比照

关于ArrayList和LinkedList的插入,遍历,删除时间比照

qq_44597856的博客 400

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ArrayList、LinkedList、HashMap的遍历及遍历过程中增删元素

ArrayList、LinkedList、HashMap是Java中常用到的几种集合类型,遍历它们是时常遇到的情况。当然还有一些变态的时候,那就是在遍历的过程中动态增加或者删除其中的元素。     下面的例子就是可以实现动态遍历ArrayList、LinkedList、HashMap。 1 import java.util.ArrayList; 2 import java.ut

Scott的专栏 3192

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ArrayList LinkedList源码解析

ArrayList LinkedList源码解析 在java中,集合这一数据结构应用广泛,应用最多的莫过于List接口下面的ArrayList和LinkedList; 我们先说List, 1 public interface List<E> extends Collection<E> { 2 //返回l...

sunshinegirl168660的博客 263

Java基础16 集合(ArrayList、LinkedList

如何保存数据?Object类型的一维数组 transient Object[] elementData; 数组初始长度是多少?10 private static final int DEFAULT_CAPACITY = 10; ArrayList是如何动态扩容的?如果数据的个数超过原来的容量,就将容量扩展为原来的1.5倍,然后复制数据到新数组中。 private void grow(int minCapacity) { // overflow-conscious code int oldCapacity =

qdwd888的博客 265

java集合之列表:ArrayList、Vector、LinkedList

1 package com.jdk7.chapter4; 2 3 import java.util.ArrayList; 4 import java.util.LinkedList; 5 import java.util.List; 6 import java.util.ListIterator; 7 import java.util.Stack; ...

weixin_30535843的博客 790

Linkedlist与ArrayList的各种操作性能对比-单线程对比

Linkedlist与ArrayList的各种操作性能对比-单线程对比

aaashen的专栏 1423

集合性能基准测试报告:ArrayList vs LinkedList、HashMap vs TreeMap、并发 Map 四兄弟

脑图文字版]中央:集合性能基准├─ArrayList:随机访问 6M,写尾部 3M├─LinkedList:头插 1.8M,随机读 12k├─TreeMap:put 95k,有序场景├─CHM:读 80M,写 5M,综合 74M└─COWList:└─COWList:写 1MB ×100 → 202 MB 峰值,读 0.3 ms 无敌“Array 随访问 6M 碾压,Linked 头插 1.8M 反杀;Hash put 2M 树Map 跪,CHM 综合 74M 封神;

持续输出Java相关知识 877

某团技术拷问:ArrayList 和 LinkedList 哪个更占空间?

HR力荐了一个工作 4 年,目前年薪 40W+ 的候选人。看他简历,从 JVM、MySQL、Redis,再到悲观锁、乐观锁一个都不缺,并发编程、分布式也都接触过,像是个实力派!着急用人...

方志朋的博客 194
上一篇: 如何定义两个对象相等? --《JAVA编程思想》 69
下一篇: TreeSet、HashSet和LinkedHashSet该如何选择? --《JAVA编程思想》 71
BaymaxCS
博客等级 码龄9年 61粉丝 98原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BaymaxCS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值