400-650-7353
您所在的位置:首頁 > IT干貨資料 > java > 【Java基礎(chǔ)知識】Java數(shù)組與集合使用方法

【Java基礎(chǔ)知識】Java數(shù)組與集合使用方法

  • 發(fā)布: java培訓(xùn)
  • 來源:Java培訓(xùn)干貨資料
  • 2020-04-03 18:23:08
  • 閱讀()
  • 分享
  • 手機端入口

在java中我們可以用數(shù)組或者集合將一些數(shù)據(jù)集中起來進(jìn)行管理,但是數(shù)據(jù)和集合也有一些不同的特點;

當(dāng)我們創(chuàng)建數(shù)組的時候,我們需要指定數(shù)組的大小,也就是需要說明這個數(shù)據(jù)可以存多少數(shù)據(jù),并且指定所存數(shù)據(jù)的類型,比如我們要存int類型或者其他類型的,當(dāng)我們規(guī)定好存儲的大小和類型之后,程序會為我們在內(nèi)存中開辟一塊連續(xù)的存儲空間,并且只能保存我們之前規(guī)定的數(shù)據(jù)類型,不可以存放其他類型;使用數(shù)組的時候,我們修改和獲取數(shù)組里面的內(nèi)容速度會很快,但是因為分配的內(nèi)存是連續(xù)的,當(dāng)我們需要在中間插入一個數(shù)據(jù)的時候,需要將后面的數(shù)據(jù)一個一個的往后移動,然后在插入的位置保存需要插入的值,這樣插入效率就會比較低了;

在java中集合List是一個接口,常用的實現(xiàn)List的類有ArrayList,LinkList,Vector;這三個底層的實現(xiàn)也是有不同的區(qū)別;

ArrayList底層的實現(xiàn)是動態(tài)數(shù)組,所以ArrayList對于數(shù)據(jù)的查詢,效率會比較高,但是對于數(shù)據(jù)的插入效率會比較低;

【Java基礎(chǔ)知識】Java數(shù)組與集合

LinkList底層的實現(xiàn)是雙向鏈表,鏈表的實現(xiàn)原理是一個節(jié)點連接著下一個節(jié)點,所以一個鏈表在內(nèi)存中的地址并不是連續(xù)的,當(dāng)我們需要在第N個位置之后插入一個數(shù)據(jù)的時候,程序可以在空閑的內(nèi)存中將數(shù)據(jù)保存,然后將這個數(shù)據(jù)的下一個節(jié)點指向第N個位置的下一個節(jié)點,然后重新將第N個位置數(shù)據(jù)的下一個位置指向新創(chuàng)建的數(shù)據(jù),這樣就將新的數(shù)據(jù)插入到了鏈表中,這種形式不需要移動插入位置的后邊數(shù)據(jù),僅僅只是修改了節(jié)點的指向,所以鏈表插入效率會比較高,但是如果要查詢的時候,就需要從頭結(jié)點往后一個一個的查找,知道找到所要查找的數(shù)據(jù),所以鏈表的查詢效率相對比較低了;

Vector的實現(xiàn)也是基于數(shù)據(jù)實現(xiàn)的(類似ArrayList),但是他與ArrayList不同的點在于,Vector是線程安全的,所以在效率方面會比ArrayList低一些;

雖然ArrayList是基于數(shù)據(jù)實現(xiàn)的,但是數(shù)組一旦確定大小之后,以后是不可以再次修改保存數(shù)據(jù)量大小的,但是ArrayList并沒有大小的限制,他是基于數(shù)據(jù)進(jìn)行動態(tài)擴容的,所以效率方面數(shù)組的效率相對于ArrayList高一些;

在我們開發(fā)中,如果確定空間大小的,我們可以使用數(shù)據(jù)來進(jìn)行保存,如果不確定大小的數(shù)據(jù)可以使用List進(jìn)行保存數(shù)據(jù);然后根據(jù)數(shù)據(jù)查詢頻率和增刪頻率的不同,可以選擇ArrayList和LinkList;

文章“【Java基礎(chǔ)知識】Java數(shù)組與集合使用方法”已幫助

>>本文地址:http://m.hqfphsz.com/zhuanye/2020/48579.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個方向的工作?

獲取測試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營銷互聯(lián)網(wǎng)營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內(nèi)設(shè)計室內(nèi)設(shè)計
  • 平面設(shè)計平面設(shè)計
  • 電商設(shè)計電商設(shè)計
  • 網(wǎng)頁設(shè)計網(wǎng)頁設(shè)計
  • 全鏈路UI/UE設(shè)計UI設(shè)計
  • VR/AR游戲開發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發(fā)智能機器人
 

快速通道fast track

近期開班時間TIME