91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LinkedList和ArrayList區別

發布時間:2020-10-25 06:07:04 來源:網絡 閱讀:115 作者:ckllf 欄目:編程語言

  1. LinkedList

  2. ArrayList

  那么這兩者有什么異同呢

  首先是代碼測試:

  import java.util.ArrayList;

  import java.util.LinkedList;

  import java.util.List;

  import bean.Answer;

  import bean.User;

  /**

  * 測試類

  *

  * @author hxz

  *

  */

  public class MyTestUtil {

  public static void addTest(List list) {

  System.out.println(list.getClass().getName() + "開始查詢");

  long start = System.currentTimeMillis();

  System.out.println("開始時間:" + start);

  list.add("需要查找的數據");

  list.add("eeee");

  list.add("aaee");

  list.add("abbb");

  for (int i = 0; i < 10000000; i++) {

  for (int j = 0; j < list.size(); j++) {

  list.get(j).contains("e");

  System.out.print("");

  }

  }

  long end = System.currentTimeMillis();

  System.out.println("結束時間:" + end);

  System.out.println("總耗時:" + (end - start));

  }

  public static void main(String[] args) {

  List a = new ArrayList<>();

  List b = new LinkedList<>();

  addTest(a);

  addTest(b);

  }

  }

  ???不是說ArrayList查詢快于LinkedList么?

  然后我們測試增加

  ???簡直顛覆我的認知!

  難道我學的都是錯的嗎?

  事情的真相只有一個!

  首先我們需要了解

  linkedLIst是雙向鏈表結構

  元素之間的所有關系是通過引用關聯的,就好比最近特別火的從袖子里撤出棒棒糖來的情景,想要撤出下一個就必須撤出上一個。它在查詢的時候,只能一個一個的遍歷查詢,所以他的查詢效率很低,如果我們想刪除一節怎么辦呢?就相當于自行車的鏈子,有一節壞了,我們是不是直接把壞的那節仍掉,然后讓目標節的上一節指向目標節的下一節,但是

  ArrayList是數組結構鄭州好的婦科醫院 http://www.zzkedayy.com/

  

LinkedList和ArrayList區別


  就是有相同特性的一組數據的箱子,比如說我有一個能容下10個蘋果的箱子,我現在只放了5個蘋果,那么放第6個是不是直接放進去就行了?呢我要放11個呢?這個箱子是不是放不下了?所以我是不是需要換個大點的箱子?這就是**數組的擴容!**同樣,我們一般放箱子里面的東西是不是按照順序放的?假如說是按abcd的順序放的,我突然想添加一個e,這個e要放到c的后面,你是不是需要把d先拿出來,再把e放進去,再把d放進去?假如說c后面有10000個呢?你是不是要把這10000個都拿出來,把e放進去,再放這10000個?效率是不是很低了?所以,理論上它的增刪比較慢!但是前面也說了,我們箱子里面放東西,都是按照順序放的,所以我知道其中一個"地址",是不是就知道所有元素的地址?所以它的查詢在理論上比較快!

  注意:只是在在list容量較大情況下,ArrayList查詢數據要遠優于LinkedList

  

LinkedList和ArrayList區別


  

LinkedList和ArrayList區別


  總結

  ArrayList和LinkedList在性能上各有優缺點,都有各自所適用的地方,總的說來可以描述如下:

  對ArrayList而言,主要是在內部數組中增加一項數據,指向所添加的元素,偶爾復雜度為O(n)可能會導致對數組重新進行分配;而對LinkedList而言,這個開銷是統一的,復雜度為O(1),分配一個內部對象。

  在ArrayList的中間插入或刪除一個元素意味著這個列表中剩余的元素都會被移動;而在LinkedList的中間插入或刪除一個元素的開銷是固定的。

  LinkedList不支持高效的隨機元素訪問。

  只是在在list容量較大情況下,ArrayList查詢數據要遠優于LinkedList


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贡嘎县| 洛隆县| 金华市| 东莞市| 青海省| 易门县| 花垣县| 玉山县| 万荣县| 平利县| 丰顺县| 芦溪县| 凌云县| 格尔木市| 上高县| 彰武县| 昌都县| 隆尧县| 岑溪市| 左权县| 淮北市| 舞阳县| 称多县| 牟定县| 斗六市| 新源县| 崇礼县| 吴桥县| 海兴县| 郧西县| 纳雍县| 金堂县| 鱼台县| 弥渡县| 横峰县| 乌海市| 即墨市| 玛多县| 邛崃市| 秀山| 杭州市|