ArrayList和LinkedList特点比较

ArrayList:

数据结构实现,查询快、增删慢

JDK1.2版本,运行效率快、线程不安全。

I. JDK8的ArrayList,实际初始长度是0
II. 首次添加元素时,需要实际分配数组空间,执行数组扩容操作
III. 真正向数组中插入数据,(Lazy懒)用的时候再创建,或再加载,有效的降低无用内存的占用

LinkedList:

I. 链表(链接列表)结构存储,查询慢、增删快。

判断特点的一段代码

import java.util.Arrays;
import java.util.*;

public class TestExercisList {

    public static void main(String[] args) {
        

        List li1 = new ArrayList();
        
        List li2 = new LinkedList();
        
        for (int i = 0; i < 100; i++) {
            li2.add("Hello");
        }
        long startNano = System.nanoTime();
        
        for (int i = 0; i < 100; i++) {
            li1.add("Hello");
        }
        
        
        System.out.println("数组结构增删时间");
        long startNano1 = System.nanoTime();
        for (int i = 50; i < 80; i++) {
            li2.add(i,"World");
        }
        System.out.println(System.nanoTime() - startNano1);
        
        
        System.out.println("链表结构增删时间");
        long startNano2 = System.nanoTime();
        for (int i = 50; i < 80; i++) {
            li1.add(i,"World");
        }
        System.out.println(System.nanoTime() - startNano2);
        
        System.out.println("数组结构查询时间");
        long startNano3 = System.nanoTime();
        li1.get(20);
        System.out.println(System.nanoTime() - startNano3);
        
        System.out.println("链表结构查询时间");
        long startNano4 = System.nanoTime();
        li2.get(20);
        System.out.println(System.nanoTime() - startNano4);
        
        
    }

}

结果:

发布了24 篇原创文章 · 获赞 69 · 访问量 1179

猜你喜欢

转载自blog.csdn.net/S9264L/article/details/104664580