【Java基礎知識】Java陣列與集合
在java中我們可以用陣列或者集合將一些資料集中起來進行管理,但是資料和集合也有一些不同的特點;
當我們建立陣列的時候,我們需要指定陣列的大小,也就是需要說明這個資料可以存多少資料,並且指定所存資料的型別,比如我們要存int型別或者其他型別的,當我們規定好儲存的大小和型別之後,程式會為我們在記憶體中開闢一塊連續的儲存空間,並且只能儲存我們之前規定的資料型別,不可以存放其他型別;使用陣列的時候,我們修改和獲取陣列裡面的內容速度會很快,但是因為分配的記憶體是連續的,當我們需要在中間插入一個資料的時候,需要將後面的資料一個一個的往後移動,然後在插入的位置儲存需要插入的值,這樣插入效率就會比較低了;
在java中集合List是一個介面,常用的實現List的類有ArrayList,LinkList,Vector;這三個底層的實現也是有不同的區別;
ArrayList底層的實現是動態陣列,所以ArrayList對於資料的查詢,效率會比較高,但是對於資料的插入效率會比較低;
LinkList底層的實現是雙向連結串列,連結串列的實現原理是一個節點連線著下一個節點,所以一個連結串列在記憶體中的地址並不是連續的,當我們需要在第N個位置之後插入一個資料的時候,程式可以在空閒的記憶體中將資料儲存,然後將這個資料的下一個節點指向第N個位置的下一個節點,然後重新將第N個位置資料的下一個位置指向新建立的資料,這樣就將新的資料插入到了連結串列中,這種形式不需要移動插入位置的後邊資料,僅僅只是修改了節點的指向,所以連結串列插入效率會比較高,但是如果要查詢的時候,就需要從頭結點往後一個一個的查詢,知道找到所要查詢的資料,所以連結串列的查詢效率相對比較低了;
Vector的實現也是基於資料實現的(類似ArrayList),但是他與ArrayList不同的點在於,Vector是執行緒安全的,所以在效率方面會比ArrayList低一些;
雖然ArrayList是基於資料實現的,但是陣列一旦確定大小之後,以後是不可以再次修改儲存資料量大小的,但是ArrayList並沒有大小的限制,他是基於資料進行動態擴容的,所以效率方面陣列的效率相對於ArrayList高一些;
在我們開發中,如果確定空間大小的,我們可以使用資料來進行儲存,如果不確定大小的資料可以使用List進行儲存資料;然後根據資料查詢頻率和增刪頻率的不同,可以選擇ArrayList和LinkList;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2692924/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java集合/陣列排序知識與IO流結合例項Java陣列排序
- java之陣列與集合Java陣列
- 初識Java Java基礎知識Java
- JAVA與tomcat基礎知識JavaTomcat
- Java集合原始碼分析之基礎(一):陣列與連結串列Java原始碼陣列
- Java基礎知識Java
- 惡補基礎知識:Java 棧與佇列詳解Java佇列
- 【Java基礎】--演算法與陣列Java演算法陣列
- Java 集合與陣列互相轉換Java陣列
- Java基礎概念知識Java
- java基礎知識點Java
- Java基礎知識(二)Java
- Java SE 基礎知識Java
- JS-陣列基礎知識3JS陣列
- JAVA基礎--二維陣列Java陣列
- 關於Java的小知識集合之 ArrayList可變長陣列Java陣列
- 【Java基礎知識】Java流程控制Java
- Java培訓基礎知識-Java的常量與變數Java變數
- 《java程式設計基礎》java的基礎知識(三)Java程式設計
- Java併發--基礎知識Java
- Java基礎知識點梳理Java
- Java基礎知識——異常Java
- Java基礎知識總結Java
- Java基礎知識面試題Java面試題
- Java基礎知識七——方法Java
- Java 基礎面試知識點Java面試
- Java基礎知識回顧Java
- java之路,基礎知識1Java
- JAVA基礎知識補漏Java
- 【Java基礎】集合Java
- java基礎(十) 陣列型別Java陣列型別
- Java基礎知識篇——Java基本介紹Java
- Java中集合與陣列互轉總結Java陣列
- 流程控制與陣列—Java基礎學習(二)陣列Java
- 初識Java(Java陣列-陣列的基本操作)Java陣列
- JAVA學習知識集合Java
- Java集合類知識整理Java
- java集合中那些知識Java