ArrayList和LinkedList区别

ArrayList和LinkedList区别

由于平时经常使用ArrayList却很少涉及到LinkedList,今天偶然在遍历文件时使用到了LinkedList,因此再次学习了两者的区别,下面先附上遍历文件的代码:

private static void traverFile(File file) {
    LinkedList<File> list = new LinkedList<File>();
    //将传入file插入列表前
    list.push(file);
    while (!list.isEmpty()) {
        //从文件列表弹出第一个元素
        File first = list.pop();
        System.out.println(first);
        //查询该弹出文件下的子文件
        File[] files = first.listFiles();
        if (files != null) {
            for (File file : files) {
                //将文件下所有文件压入列表
                list.push(file);
            }
        }
    }
}
  • 上面代码借助后进先出的栈结构,采用深度遍历方式遍历文件,相比最常用的的递归遍历方式不会出现栈溢出。

下面回到主题

  • 现在回到ArrayList和LinkedList的对比上来。

一、ArrayList特点

  • 1.Java中java.util.ArrayList类提供了可调整大小的数组并实现了List接口
  • 2.允许包括null在内所有元素**(存储在ArrayList内的元素必须是对象,不能是基本类型数据**)
  • 3.包含所有可选择的列表操作的实现(包括增删改查)
  • 4.提供方法来操作内部数组的大小,在容量不足时会自动将容量增加现有的50%(使用 .size()方法来获取实际大小
  • 5.使用下标来访问和遍历元素的效率较高,插入删除效率低(适用于频繁访问和遍历的数据,不适用于频繁变动的大量数据)for循环遍历效率高

二、LinkedList特点

  • 1.LinkedList使用了循环双向链表的数据结构,由于是链表,不存在容量不足的问题
  • 2.既可以作为FIFO的队列结构,也可以作为LIFO的栈结构
  • 3.使用指针来访问元素,插入和删除效率高,随机访问效率低(适用于数据量很大或者操作很频繁的数据)使用迭代器访问效率最高

三、总结

  • 通常来说ArrayList使用场景比较多,ArrayList也可以用于设计栈和队列但有可能出现溢出
  • LinkedList和ArrayList和区别在于数组和链表之间的差别
  • LinkedList更适合设计栈和队列结构,绝对不要用for循环随机访问LinkedList
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值