真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

LinkedList和ArrayList區(qū)別

1. LinkedList

成都創(chuàng)新互聯(lián)公司從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元下冶做網(wǎng)站,已為上家服務(wù),為下冶各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

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("需要查找的數(shù)據(jù)");

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("結(jié)束時間:" + 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么?

然后我們測試增加

???簡直顛覆我的認(rèn)知!

難道我學(xué)的都是錯的嗎?

事情的真相只有一個!

首先我們需要了解

linkedLIst是雙向鏈表結(jié)構(gòu)

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

ArrayList是數(shù)組結(jié)構(gòu)鄭州好的婦科醫(yī)院 http://www.zzkedayy.com/

LinkedList和ArrayList區(qū)別

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

注意:只是在在list容量較大情況下,ArrayList查詢數(shù)據(jù)要遠(yuǎn)優(yōu)于LinkedList

LinkedList和ArrayList區(qū)別

LinkedList和ArrayList區(qū)別

總結(jié)

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

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

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

LinkedList不支持高效的隨機(jī)元素訪問。

只是在在list容量較大情況下,ArrayList查詢數(shù)據(jù)要遠(yuǎn)優(yōu)于LinkedList


網(wǎng)站題目:LinkedList和ArrayList區(qū)別
文章位置:http://weahome.cn/article/pgpggs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部