日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA_list总结

發(fā)布時間:2024/4/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA_list总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

list,列表序列。是編程工作充常用的對象,類似數(shù)組,用于存儲統(tǒng)一類型的集合的對象。
先放結(jié)論:

類型數(shù)據(jù)結(jié)構(gòu)特點描述
ArrayList數(shù)組最常用,隨機訪問高效,插入刪除效率低
LinkedList雙向鏈表隨機訪問效率低,但隨機插入、隨機刪除效率低
Vector數(shù)組類似ArrayList,但線程安全
Stack它繼承于Vector,先進后出

ArrayList

首先,ArrayList的本質(zhì)是數(shù)組,在jdk1.8.0_121的java.util.ArrayList中,可以看到以下代碼

transient Object[] elementData; // non-private to simplify nested class access

這就是ArrayList的本質(zhì),一個Object[],只不過,在add的時候,會自動的進行擴容而已。

public boolean add(E e) {ensureCapacityInternal(size + 1); // Increments modCount!!elementData[size++] = e;return true; }

也因此:

  • 隨機訪問效率高(直接elementData[i]就可以取得對象)
  • 插入刪除慢(每次插入刪除,尤其是對非尾對象進行改變時,都會導(dǎo)致Object[] elementData結(jié)構(gòu)整個的變動)
  • 線程不安全(單純的數(shù)組,沒有做任何保護處理)
  • 推薦使用方法:

    // ArrayList基本例子 List<String> arrayList = new ArrayList<String>(); arrayList.add("test1"); arrayList.add("test2"); arrayList.add("test3"); for (int i = 0; i < arrayList.size();i++){System.out.println(arrayList.get(i)); }

    LinkedList

    源碼(jdk1.8.0_121):

    transient Node<E> first;transient Node<E> last;private static class Node<E> {E item;Node<E> next;Node<E> prev;Node(Node<E> prev, E element, Node<E> next) {this.item = element;this.next = next;this.prev = prev;} }

    是的,這就是雙向鏈表,只保存首尾兩個節(jié)點,同時,每個節(jié)點保存其自身前后節(jié)點地址。也因此:

  • 訪問效率低(非首尾節(jié)點時,只能從首尾節(jié)點開始,一個一個去尋找)
  • 插入刪除效率高(只需要創(chuàng)建或者刪除節(jié)點,并且調(diào)整相鄰節(jié)點的地址即可)
  • 線程不安全(節(jié)點,沒有做任何保護處理)
  • 推薦使用方法:

    // linkedList基本例子 List<String> linkedList = new LinkedList<String>(); linkedList.add("test1"); linkedList.add("test2"); linkedList.add("test3"); for (String data : linkedList){System.out.println(data); }

    另外,用于LinkedList的implements包含Deque,而Deque繼承Queue,所以LinkedList也可作為隊列來使用。
    例子:

    Queue<String> queue = new LinkedList<String>(); queue.add("test1"); queue.add("test2"); queue.add("test3"); System.out.println(queue.size()); for (int i = 0; i < 3;i++){System.out.println(queue.poll()); } System.out.println(queue.size()); // 結(jié)果: // 3 // test1 // test2 // test3 // 0

    Vector

    源碼(jdk1.8.0_121):

    protected Object[] elementData;

    是的,和ArrayList一樣,Vector的本質(zhì)是一個數(shù)組,區(qū)別在于相關(guān)的方法:

    public synchronized boolean add(E e) {modCount++;ensureCapacityHelper(elementCount + 1);elementData[elementCount++] = e;return true; }

    對,重點就是synchronized,因為Vector的方法都有synchronized,有了線程的保護,所以Vector是線程安全的。
    Vector類似ArrayList,是線程安全的。知道這一點就足夠了。

    ** !但是! **
    雖然Vector是線程安全的,但是想要使用線程安全的ArrayList的時候,簡易使用JUC集合類中的CopyOnWriteArrayList。


    Stack

    源碼(jdk1.8.0_121):

    protected Object[] elementData;

    又來?是的,Stack的底層仍然是一個數(shù)組,但是相關(guān)的方法卻大不一樣。雖然由于繼承父類Vector,add這種方法還是存在,但是卻一般不用。一般使用的是以下方法:

    public E push(E item) {addElement(item);return item; } public synchronized E pop() {E obj;int len = size();obj = peek();removeElementAt(len - 1);return obj; } public synchronized E peek() {int len = size();if (len == 0)throw new EmptyStackException();return elementAt(len - 1); }

    說明:
    push:將元素推入棧中,通過將元素追加的數(shù)組的末尾中。
    peek:取出棧頂元素,不執(zhí)行刪除,返回數(shù)組末尾的元素。
    pop:取出棧頂元素,將該元素從棧中刪除,返回。
    總之:

  • 使用push插入,用peek或pop去除(符合堆棧特性)
  • 線程安全(使用synchronized)
  • 例子:

    // stack基本例子 Stack<String> stack = new Stack<String>(); stack.push("test1"); stack.push("test2"); stack.push("test3"); for (int i = 0; i < 3;i++){System.out.println(stack.pop()); }

    轉(zhuǎn)載于:https://www.cnblogs.com/changfanchangle/p/8867445.html

    總結(jié)

    以上是生活随笔為你收集整理的JAVA_list总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产免费不卡视频 | 成人特级毛片69免费观看 | 午夜激情影视 | 三级av片| 国产一卡二 | 成人一级在线 | av综合色 | 亚洲一区在线视频 | 免费一级全黄少妇性色生活片 | 中文字幕无码不卡免费视频 | 韩国无码av片在线观看网站 | 91麻豆一区二区三区 | 亚洲porn| 国产第一页在线观看 | 成人黄色一级视频 | 精品免费av | 人人搞人人爱 | 丰满大乳奶做爰ⅹxx视频 | 国产精品一区久久久 | 亚洲自拍偷拍综合 | 思思久久99 | 在线免费观看你懂的 | 97综合网| 五月婷婷深爱 | kk视频在线观看 | 日韩久久久久久 | 天堂网视频在线 | 一本大道久久久久精品嫩草 | 欧美韩国日本一区 | 欧美亚洲三级 | 少妇高潮露脸国语对白 | 精品视频久久久久 | 欧美日一区二区三区 | 黄一区二区三区 | 精品亚洲永久免费 | 国产精品麻豆成人av电影艾秋 | 中文字幕日韩欧美 | 欧美激情欧美激情在线五月 | 色天天综合网 | youjizz.com国产| 久久久久久激情 | 精品在线二区 | 福利片一区二区 | 国产69精品麻豆 | 有色影院 | 欧美美女性生活视频 | 美女视频一区 | 性高潮久久久久久久久 | 俺来也在线视频 | 免费黄在线看 | 天天干 夜夜操 | 五月天一区二区 | 午夜爽爽爽视频 | 美女精品一区二区 | 日本韩国欧美一区二区 | 暖暖av在线 | 大黑人交xxx极品hd | 狠狠操91 | 夜夜爽av福利精品导航 | 999久久久久| 欧美一区欧美二区 | 免费看的黄色网 | 精品自拍av | 91精品国产成人观看 | 看片日韩 | 欧美一区二区三区视频在线 | 国产一级免费大片 | 超碰一级片 | 国产日韩欧美视频 | 肉嫁高柳家 高清 | 国产高清免费在线 | 131mm少妇做爰视频 | 成人在线小视频 | 天天色天天射天天操 | 亚洲av无码久久精品狠狠爱浪潮 | 精品在线免费视频 | 国产污片在线观看 | 理论片琪琪午夜电影 | 一区二区国产视频 | 91成品视频 | 亚洲成av人片一区二区 | 国产福利在线观看视频 | 亚洲色图小说 | 可以直接看av的网址 | 久久久88| 欧美视频一级 | 香蕉视频在线看 | 日韩欧美中文字幕在线播放 | 黄瓜视频在线免费看 | 国产麻豆成人传媒免费观看 | 内射中出日韩无国产剧情 | 亚洲美女一级片 | 蜜桃久久精品 | 天堂中文8 | 一区二区三区精彩视频 | 中国一级黄色大片 | 国产黄色免费 | 在线免费看91 | 黄色香蕉视频 |