zoukankan      html  css  js  c++  java
  • List和ArrayList,LinkList的区别

    接口 List<E> 是一个接口;

    ArrayList<E> 是一个类:是一个实现了List接口的类,因此可以List里面定义的所有的方法都实现了。

    1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

    2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针

    3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

    一.时间复杂度

     

    首 先一点关键的是,ArrayList的内部实现是基于基础的对象数组的,因此,它使用get方法访问列表中的任意一个元素时(random access),它的速度要比LinkedList快。LinkedList中的get方法是按照顺序从列表的一端开始检查,直到另外一端。对 LinkedList而言,访问列表中的某个指定元素没有更快的方法了。

     eg:
    List接口:
    List list = new ArrayList();//实例化的是ArrayList这个类
    List list = new Vector();//实例化的是Vector这个类 

    模拟一个集合。 List ,Collection ,ArrayList

    MyCollection.java 基类接口

    package com.sun.test;
    
    public interface MyCollection {
    public void Sayname();
    }
    MyList .java
    
    package com.sun.test;

    public interface MyList extends MyCollection {
        public void say();
    }

    MyArrayList.java 在这里实现了所有的接口的方法
    package com.sun.test;

    public class MyArrayList implements MyList {

        public void say() {
            // TODO Auto-generated method stub
            System.out.println("您调用了这个数组List");
        }

        public void Sayname() {
            // TODO Auto-generated method stub
            System.out.println("您调用了这个Collection");
        }

    }


    TestList.java 接口的类型不同,new出来的对象能够实现的方法也有不同

    package com.sun.test;

    public class TestList {

        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            MyList mylist = (MyList) new MyArrayList();
            mylist.say();
            mylist.Sayname();
            
            MyCollection mylist2 = (MyCollection) new MyArrayList();
            
            mylist2.Sayname();
        }

    }


  • 相关阅读:
    SpringCloud高可用和高并发
    时间重要性,我们需要如何利用极致
    Spring是什么 包括SpringBean SpringMVC SpringBoot SpringCloud
    Java 线程的基本使用
    JVM 内存模型
    Java 8 ArrayList 详解
    Java 8 HashMap 源码解析
    Docker 运行 MySQL,使用 docker-compose
    Spring Boot 主从读写分离
    Spring Boot 整合 MyBatis 实现乐观锁和悲观锁
  • 原文地址:https://www.cnblogs.com/sunxun/p/5276365.html
Copyright © 2011-2022 走看看