亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中Array、List、ArrayList的區(qū)別及說(shuō)明

 更新時(shí)間:2023年07月25日 11:05:11   作者:wiidi  
這篇文章主要介紹了Java中Array、List、ArrayList的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Array、List、ArrayList區(qū)別

Array

Array(數(shù)組)是基于索引(index)的數(shù)據(jù)結(jié)構(gòu),它使用索引在數(shù)組中搜索和讀取數(shù)據(jù)是很快的。

Array獲取數(shù)據(jù)的時(shí)間復(fù)雜度是O(1),但是要?jiǎng)h除數(shù)據(jù)卻是開(kāi)銷(xiāo)很大,因?yàn)檫@需要重排數(shù)組中的所有數(shù)據(jù)。

List

List—是一個(gè)有序的集合,可以包含重復(fù)的元素,提供了按索引訪問(wèn)的方式,它繼承Collection。

List是一個(gè)接口,不能寫(xiě)成如下:

List<Integer> list = new List<Integer>();//錯(cuò)誤

List有兩個(gè)重要的實(shí)現(xiàn)類(lèi):ArrayList和LinkedList

ArrayList

繼承關(guān)系

這里寫(xiě)圖片描述

可以看作是能夠自動(dòng)增長(zhǎng)容量的數(shù)組;

利用ArrayList的toArray返回一個(gè)數(shù)組;

Arrays.asList返回一個(gè)列表;

  • ArrayList底層采用數(shù)組實(shí)現(xiàn),當(dāng)使用不帶參數(shù)的構(gòu)造方法生成ArrayList對(duì)象時(shí),實(shí)際上會(huì)在底層生成一個(gè)長(zhǎng)度為10的Object類(lèi)型的數(shù)組。
  • 如果增加的元素個(gè)數(shù)超過(guò)10個(gè),那么ArrayList底層會(huì)生成一個(gè)新的數(shù)組,長(zhǎng)度為原數(shù)組的1.5倍+1,然后將原數(shù)組的內(nèi)容復(fù)制到新數(shù)組中,并且后續(xù)增加的內(nèi)容都會(huì)放到新的數(shù)組當(dāng)中,當(dāng)新的數(shù)組無(wú)法容納增加的元素時(shí),重讀該過(guò)程。
  • 對(duì)于ArrayList元素的刪除操作,需要將被刪除元素的后續(xù)元素向前移動(dòng),代價(jià)比較大。
  • 集合當(dāng)中只能放置對(duì)象的引用,無(wú)法放置原生數(shù)據(jù)類(lèi)型,我們必須使用原生數(shù)據(jù)的包裝類(lèi)才能加入到集合當(dāng)中。
  • 集合當(dāng)中都是Object類(lèi)型,因此取出來(lái)的也是Object類(lèi)型,那么必須要使用強(qiáng)制類(lèi)型轉(zhuǎn)化將其轉(zhuǎn)換成真正的類(lèi)型(放置進(jìn)去的類(lèi)型)。

LinkedList

是一個(gè)雙鏈表,在添加和刪除元素時(shí)具有比ArrayList更好的性能.但在get與set方面弱于ArrayList.當(dāng)然,這些對(duì)比都是指數(shù)據(jù)量很大或者操作很頻繁。

  • 相對(duì)于ArrayList,LinkedList插入是更快的。因?yàn)長(zhǎng)inkedList不像ArrayList一樣,不需要改變數(shù)組的大小,也不需要在數(shù)組裝滿的時(shí)候要將所有的數(shù)據(jù)重新裝入一個(gè)新的數(shù)組,這是ArrayList最壞的一種情況,時(shí)間復(fù)雜度是O(n),而LinkedList中
  • 插入或刪除的時(shí)間復(fù)雜度僅為O(1)。ArrayList在插入數(shù)據(jù)時(shí)還需要更新索引(除了插入數(shù)組的尾部)。
  • 類(lèi)似于插入數(shù)據(jù),刪除數(shù)據(jù)時(shí),LinkedList也優(yōu)于ArrayList。
  • LinkedList需要更多的內(nèi)存,因?yàn)锳rrayList的每個(gè)索引的位置是實(shí)際的數(shù)據(jù),而LinkedList中的每個(gè)節(jié)點(diǎn)中存儲(chǔ)的是實(shí)際的數(shù)據(jù)和前后節(jié)點(diǎn)的位置。

Array和ArrayList有何區(qū)別?什么時(shí)候更適合用Array?

Array 可以容納基本類(lèi)型和對(duì)象,而 ArrayList 只能容納對(duì)象。

Array 是指定大小的,而 ArrayList 大小是固定的。

Array 沒(méi)有提供 ArrayList 那么多功能,比如 addAll 、 removeAll 和 iterator 等。盡管 ArrayList 明顯是更好的選擇,但也有些時(shí)候 Array 比較好用。

1 、如果列表的大小已經(jīng)指定,大部分情況下是存儲(chǔ)和遍歷它們。

2 、對(duì)于遍歷基本數(shù)據(jù)類(lèi)型,盡管 Collections 使用自動(dòng)裝箱來(lái)減輕編碼任務(wù),在指定大小的基本類(lèi)型的列表上工作也會(huì)變得很慢。

3 、如果你要使用多維數(shù)組,使用 [][] 比 List<List<>> 更容易。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringCloud微服務(wù)調(diào)用丟失請(qǐng)求頭的問(wèn)題及解決方案

    SpringCloud微服務(wù)調(diào)用丟失請(qǐng)求頭的問(wèn)題及解決方案

    在Spring Cloud 中微服務(wù)之間的調(diào)用會(huì)用到Feign,但是在默認(rèn)情況下,Feign 調(diào)用遠(yuǎn)程服務(wù)存在Header請(qǐng)求頭丟失問(wèn)題,下面給大家分享SpringCloud微服務(wù)調(diào)用丟失請(qǐng)求頭的問(wèn)題及解決方案,感興趣的朋友一起看看吧
    2024-02-02
  • Java使用EasyExcel實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出

    Java使用EasyExcel實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出

    這篇文章主要給大家介紹了關(guān)于Java使用EasyExcel實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出,在各種系統(tǒng)中,導(dǎo)入導(dǎo)出的數(shù)據(jù)一般都是通過(guò)Excel來(lái)完成的,需要的朋友可以參考下
    2023-07-07
  • Java中如何將json字符串轉(zhuǎn)換成map/list

    Java中如何將json字符串轉(zhuǎn)換成map/list

    這篇文章主要介紹了Java中如何將json字符串轉(zhuǎn)換成map/list,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別

    Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別

    這篇文章主要介紹了Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別,在使用list?結(jié)合的時(shí)候習(xí)慣了?list=null?;在創(chuàng)建這樣的方式,但是發(fā)現(xiàn)使用list的clear?方法很不錯(cuò),尤其是有大量循環(huán)的時(shí)候<BR>list.clear()與list?=?null?區(qū)別,需要的朋友可以參考下
    2023-08-08
  • java實(shí)現(xiàn)上傳文件到oss(阿里云)功能示例

    java實(shí)現(xiàn)上傳文件到oss(阿里云)功能示例

    這篇文章主要介紹了java實(shí)現(xiàn)上傳文件到oss(阿里云)功能,結(jié)合實(shí)例形式詳細(xì)分析了java上傳文件到阿里云的具體步驟、配置及相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11
  • Java多線程中的單例模式兩種實(shí)現(xiàn)方式

    Java多線程中的單例模式兩種實(shí)現(xiàn)方式

    這篇文章主要介紹了Java多線程中的單例模式兩種實(shí)現(xiàn)方式的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • JDK17安裝教程以及其環(huán)境變量配置教程

    JDK17安裝教程以及其環(huán)境變量配置教程

    環(huán)境變量對(duì)Java初學(xué)者來(lái)說(shuō)真的是一件頭疼的事,本人也經(jīng)歷過(guò)這樣的事情,這篇文章主要給大家介紹了關(guān)于JDK17安裝教程以及其環(huán)境變量配置的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • SpringBoot項(xiàng)目后端開(kāi)發(fā)邏輯全面梳理

    SpringBoot項(xiàng)目后端開(kāi)發(fā)邏輯全面梳理

    這篇文章主要介紹了SpringBoot項(xiàng)目后端開(kāi)發(fā)邏輯全面梳理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java實(shí)現(xiàn)高效的枚舉元素集合示例

    java實(shí)現(xiàn)高效的枚舉元素集合示例

    Set是Java集合類(lèi)的重要組成部分,它用來(lái)存儲(chǔ)不能重復(fù)的對(duì)象。枚舉類(lèi)型也要求其枚舉元素各不相同??雌饋?lái)枚舉類(lèi)型和集合是很相似的。然而枚舉類(lèi)型中的元素不能隨意的增加、刪除,作為集合而言,枚舉類(lèi)型非常不實(shí)用。EnumSet是專門(mén)為enum實(shí)現(xiàn)的集合類(lèi),本實(shí)例將演示其用法
    2014-03-03
  • mybatis實(shí)現(xiàn)mapper代理模式的方式

    mybatis實(shí)現(xiàn)mapper代理模式的方式

    本文向大家講解mybatis的mapper代理模式,以根據(jù)ide值查詢單條數(shù)據(jù)為例編寫(xiě)xml文件,通過(guò)mapper代理的方式進(jìn)行講解增刪改查,分步驟給大家講解的很詳細(xì),對(duì)mybatis mapper代理模式相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-06-06

最新評(píng)論