Java集合與數(shù)組區(qū)別簡(jiǎn)介及相互轉(zhuǎn)換實(shí)例
數(shù)組Array和集合的區(qū)別:
(1)數(shù)組是大小固定的,并且同一個(gè)數(shù)組只能存放類型一樣的數(shù)據(jù)(基本類型/引用類型)
(2)JAVA集合可以存儲(chǔ)和操作數(shù)目不固定的一組數(shù)據(jù)。(3)若程序時(shí)不知道究竟需要多少對(duì)象,需要在空間不足時(shí)自動(dòng)擴(kuò)增容量,則需要使用容器類庫,array不適用。
聯(lián)系:使用相應(yīng)的toArray()和Arrays.asList()方法可以回想轉(zhuǎn)換。
List和ArrayList的區(qū)別
1.List是接口,List特性就是有序,會(huì)確保以一定的順序保存元素.
ArrayList是它的實(shí)現(xiàn)類,是一個(gè)用數(shù)組實(shí)現(xiàn)的List.
Map是接口,Map特性就是根據(jù)一個(gè)對(duì)象查找對(duì)象.
HashMap是它的實(shí)現(xiàn)類,HashMap用hash表實(shí)現(xiàn)的Map,就是利用對(duì)象的hashcode(hashcode()是Object的方法)進(jìn)行快速散列查找.(關(guān)于散列查找,可以參看<<數(shù)據(jù)結(jié)構(gòu)>>)
2.一般情況下,如果沒有必要,推薦代碼只同List,Map接口打交道.
比如:Listlist=newArrayList();
這樣做的原因是list就相當(dāng)于是一個(gè)泛型的實(shí)現(xiàn),如果想改變list的類型,只需要:
Listlist=newLinkedList();//LinkedList也是List的實(shí)現(xiàn)類,也是ArrayList的兄弟類
這樣,就不需要修改其它代碼,這就是接口編程的優(yōu)雅之處.
另外的例子就是,在類的方法中,如下聲明:
privatevoiddoMyAction(Listlist){}
這樣這個(gè)方法能處理所有實(shí)現(xiàn)了List接口的類,一定程度上實(shí)現(xiàn)了泛型函數(shù).
3.如果開發(fā)的時(shí)候覺得ArrayList,HashMap的性能不能滿足你的需要,可以通過實(shí)現(xiàn)List,Map(或者Collection)來定制你的自定義類.
List,Set轉(zhuǎn)換為數(shù)組的方法
toArray函數(shù)有兩種形式,一種無參數(shù),一種帶參數(shù),注意帶參數(shù)形式中,要指明數(shù)組的大小。
程序代碼:
public void convertCollectionToArray() {
List list = new ArrayList();
Object[] objectArray1 = list.toArray();
String[] array1 = list.toArray(new String[list.size()]);
Set set = new HashSet();
Object[] objectArray2 = set.toArray();
String[] array2 = set.toArray(new String[set.size()]);
}
反過來,數(shù)組轉(zhuǎn)換為L(zhǎng)ist,Set。
Integer[] numbers = {7, 7, 8, 9, 10, 8, 8, 9, 6, 5, 4};
// To convert an array into a Set first we convert it to a List. Next
// with the list we create a HashSet and pass the list as the constructor.
List list = Arrays.asList(numbers);
Set set = new HashSet(list);
注意:對(duì)于int[]數(shù)組不能直接這樣做,因?yàn)閍sList()方法的參數(shù)必須是對(duì)象。應(yīng)該先把int[]轉(zhuǎn)化為Integer[]。對(duì)于其他primitive類型的數(shù)組也是如此,必須先轉(zhuǎn)換成相應(yīng)的wrapper類型數(shù)組。
int[] numbers = {7, 7, 8, 9, 10, 8, 8, 9, 6, 5, 4};
int size = numbers.length;
Integer[] array = new Integer[size];
for (int i = 0; i < numbers.length; i++) {
Integer integer = numbers[i];
array[i] = integer;
}
List list = Arrays.asList(array);
總結(jié)
以上就是本文關(guān)于Java集合與數(shù)組區(qū)別簡(jiǎn)介及相互轉(zhuǎn)換實(shí)例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
《Java控制臺(tái)輸入數(shù)組并逆序輸出的方法實(shí)例》
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Java Kafka消費(fèi)者實(shí)現(xiàn)過程
Kafka消費(fèi)者通過KafkaConsumer類實(shí)現(xiàn),核心機(jī)制包括偏移量管理、消費(fèi)者組協(xié)調(diào)、批量拉取消息及多線程處理,手動(dòng)提交offset確保數(shù)據(jù)可靠性,自動(dòng)提交則依賴框架,本文給大家介紹Java Kafka消費(fèi)者實(shí)現(xiàn)過程,感興趣的朋友一起看看吧2025-08-08
SpringBoot整合Mybatis使用Druid數(shù)據(jù)庫連接池
這篇文章主要介紹了SpringBoot整合Mybatis使用Druid數(shù)據(jù)庫連接池,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Java Excel實(shí)現(xiàn)數(shù)據(jù)可視化預(yù)警
本文將結(jié)合 Java 編程語言 和 Spire.XLS 庫,帶你逐步實(shí)現(xiàn)三類常見的高級(jí)條件格式應(yīng)用場(chǎng)景,幫助你打造更直觀,更智能的 Excel 報(bào)表,感興趣的可以了解下2025-06-06
Java中的線程安全集合CopyOnWriteArrayList解析
這篇文章主要介紹了Java中的線程安全CopyOnWriteArrayList解析,CopyOnWriteArrayList是ArrayList的線程安全版本,從他的名字可以推測(cè),CopyOnWriteArrayList是在有寫操作的時(shí)候會(huì)copy一份數(shù)據(jù),然后寫完再設(shè)置成新的數(shù)據(jù),需要的朋友可以參考下2023-12-12
詳解JVM基礎(chǔ)之字節(jié)碼的增強(qiáng)技術(shù)
字節(jié)碼增強(qiáng)技術(shù)就是一類對(duì)現(xiàn)有字節(jié)碼進(jìn)行修改或者動(dòng)態(tài)生成全新字節(jié)碼文件的技術(shù)。接下來,我們將從最直接操縱字節(jié)碼的實(shí)現(xiàn)方式開始深入進(jìn)行剖析,感興趣的可以了解一下2022-10-10
SpringBoot Actuator潛在的OOM問題的解決
本文主要介紹了SpringBoot Actuator潛在的OOM問題的解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11

