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

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代码实现

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;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值