zoukankan      html  css  js  c++  java
  • Java集合类学习-LinkedList, ArrayList, Stack, Queue, Vector

    Collection

    List

      在Collection的基础上引入了有序的概念,位置精确;允许相同元素。在列表上迭代通常优于索引遍历。特殊的ListIterator迭代器允许元素插入、替换,双向访问,从列表中的制定位置开始(根据index获取index位置的元素)。未实现get方法。

    AbstractList

      实现了List中的一些方法,支持随机访问。lastIndexOf通过特殊迭代器能够制定开始位置,从后遍历的特性来实现。直接通过指定的位置,借助特殊迭代器找到。

    Vector

      实现可增长的数组。提供额外的方法来增加、删除元素,比数组操作高效。在增加数组时,会增加1倍,且初始时可以设置增长的空间大小。Vector是线程安全的,通过在方法中加入synchoronized关键字体现。

    Stack

      在Vextor的基础上引入了后进先出(LIFO)的对象堆栈。 通过添加5个操作实现:push , pop , peek , empty ,在堆栈中查找项并确定到堆栈顶距离的 search 

    AbstractSuquentialList

      扩展了AbstractList, 但是最大限度地减少了实现受连续访问数据存储支持的此接口所需的工作。通过制定迭代器的起始位置直接找到对应元素。

    LinkedList

      采用链表的方式实现。

    ArrayList

      采用数据实现。在增加数组时,默认为0.5倍,不是线程安全的。

    Queue

      在Collection的基础上引入了队列的特性,先进先出。添加元素有两个,add和offer: add在没有可用空间时会抛出异常,offer会返回false。同poll和remove的区别。add用在链表中,offer用在队列中,前者是实现了list接口的方法,后者是实现了queue接口的方法。

      Queue与List并列,不支持按索引获取元素。

    Deque

      双端队列在Queue的基础上支持在两端插入和移除元素。addLast,removeLast等对应Queue中的方法,有添加了新的方法。

    区别区分

    Vector与数组: vector实现了数组[]的动态增长。

    ArrayList与Vector:(1)同步性; (2)数据增长。

    ArrayList与LinkedList:(1)数据结构;(2)不同的优势:随机访问,增删操作。

     

      

     

      

  • 相关阅读:
    ITIL 4Foundation认证
    Linux服务器安全之 fail2ban的安装与配置
    Linux的常用基础命令
    jQuery源码学习(2):选择器初窥
    jQuery源码学习(1):整体架构
    从字符串拼接看JS优化原则
    理解函数作用域与闭包
    JavaScript DOM节点操作总结
    函数声明与函数表达式、变量提升
    CSS长度单位详解
  • 原文地址:https://www.cnblogs.com/fireflyupup/p/4875130.html
Copyright © 2011-2022 走看看