zoukankan      html  css  js  c++  java
  • 四、List接口

    List集合代表一个有序集合,集合中的每个元素都有其对应的唯一的索引,List集合允许添加重复元素,可以通过索引来访问对应的元素
    List作为Collection的子接口,Collection接口中的方法全部都能使用


    1.ArrayList
    特点:
    a.不排重【同一个元素,可以重复添加多次】
    b.有序的【元素的添加顺序和底层存储顺序是相同的】
    c.底层存储采用的数据结构是:数组【查询和修改的效率较高,新增和删除的效率较低】

    总结:
    a.ArrayList底层维护了一个数组,在初始化的时候,数组的长度是10
    b.通过调用集合的add方法来添加元素,如果刚开始初始化的数组被添加到满载之后,会自动增长数组的长度【length,原长度的1.5倍】,放到新的数组
    c.ArrayList是线程不安全的,所以效率高,并且进行查询或者修改的效率高,新增和删除的效率低【在新增或者删除的时候都会涉及到数组的长度的改变】
    d.以后在实际开发中,ArrayList是使用频率最广的一个集合

    2.LinkedList
    特点:
    a.不排重
    b.有序的
    c.底层存储采用的数据结构是:链表【查询和修改的效率较低,新增和删除的效率较高】

    总结:
    a.LinkedList中存储的元素在内存中的地址是不连续的,需要让上一个元素记住下一个元素,所以每个元素中保存的不仅有自己的数值,还有下一个元素的地址,虽然也有索引,但是,每查找一个元素,都需要从头开始
    b.查询和修改的时候,都需要一个一个的遍历,所以查询和修改的效率相对较低


    ArrayList和LinkedList之间的区别:
    a.相同点:不排重的,有序的
    b.ArrayLIst底层存储采用的是动态数组,允许直接使用索引来访问指定的元素,但是,插入或者删除涉及到数组的长度的改变,效率低
    c.LinkedList按照索引需要从头或者从尾部进行查找【遍历】,但是插入数据,只需要记录要插入数据的前后项,插入效率高

    3.Vector
    特点:
    a.在用法上和ArrayList完全相同
    b.底层存储采用的数据结构仍然是数组
    c.Vector是一个古老的集合,从JDK1.0就有了【从JDK1.4之后,整个集合形成了集合框架,Vector中的方法方法名都比较长,addElement()相当于add()】
    d.Vector是线程安全的,ArrayList是线程不安全的【Collections工具类中有相应的方法可以将其同步成安全的】
    e.Vector性能比ArrayList低,推荐使用ArrayList

    4.Stack
    是Vector类的子类,用于模拟“栈”这种数据结构【栈通常是先进后出的容器】
    push:进栈
    pop:出栈
    最后push进栈的元素,最先被pop出栈

    特点:
    a.不排重的
    b.有序的
    c.底层存储采用的数据结构是:栈


    5.集合的遍历
    a.简单for循环
    适用范围:只能针对ArrayList和LinkedList

    b.增强for循环
    适用范围:所有集合

    c.迭代器Iterator
    适用范围:所有集合

    d.ListIterator
    适用范围:只适用于List集合

  • 相关阅读:
    5G(NR)无线网络协议栈 (层2和层3)
    tcp,udp报文最大长度
    MSS与MTU的关系
    5G网络(接入网+承载网+核心网)
    华为发布:5G时代十大应用场景白皮书(附下载)
    爱码仕 解读5G(八)再见了,SIM卡
    爱码仕 解读5G (七)无线娱乐在家里、在车里、在加油站、在充电站、在高速公路休息区
    爱码仕 解读5G (六)健康管理和无线医疗
    爱码仕 解读5G (五)能源领域 电力馈线自动化 智慧油田 智慧海洋
    在DevExpress中使用CameraControl控件进行摄像头图像采集
  • 原文地址:https://www.cnblogs.com/lsp-lsp/p/7344052.html
Copyright © 2011-2022 走看看