前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java——ArrayList和LinkedList的区别以及List的实现

java——ArrayList和LinkedList的区别以及List的实现

作者头像
小雨的分享社区
发布2022-10-26 14:34:28
4271
发布2022-10-26 14:34:28
举报
文章被收录于专栏:小雨的CSDN

ArrayList和LinkedList有什么区别:

  • 1.ArrayList底层结构是顺序表(基于数组); LinkList是链表;
  • 2.ArrayList数据存放在内存空间上; LinkList不是存放在连续的内存空间上;
  • 3.ArrayList能够高效的进行 “随机访问 ” ,按照下面操作时间复杂度是O(1);
  • 4.LinkList能够高效的进行插入删除,时间复杂度为O(1)
  • 5.ArrayList在初始化的时候,可以通过capacity参数指定最大容量,当add尾插的时候,如果元素个数小于capacity,此时就会触发扩容操作。 LinkedList没有capacity这个概念,每次新插入一个元素,都去new一个特定的节点对象
  • 6.ArrayList比较害怕内存碎; LinkedList不怕

List代码实现

代码语言:javascript
复制
public class TestWrapperClass {
    public static void main(String[] args) {
        //实例化一个List
        List<String> list = new ArrayList<>();
        //新增
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        //打印
        System.out.println(list);
        //使用下标访问
        //如果是ArrayList访问的,get/set按下标访问比较高效,时间复杂度O(1)
        //如果是LinkedList访问的,get/set按下标访问比较低效,时间复杂度O(n)
        System.out.println("==============");
        System.out.println(list.get(0));
        //修改
        list.set(0,"d");
        System.out.println(list);

        //截取部分内容
        System.out.println(list.subList(1,3));//前闭后开区间

        //重新构造一个list
        List<String> arrayList = new ArrayList<>(list);
        List<String> linedkList = new LinkedList<>(list);
        System.out.println("=====相当于复制了List======");
        //是改变原来的list的值,新生成的链表的值不会变化,所以是深拷贝
        System.out.println(arrayList);
        System.out.println(linedkList);
        //向下转型
        ArrayList<String> arrayList1 = (ArrayList<String>)list;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ArrayList和LinkedList有什么区别:
  • List代码实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档