Java集合與數(shù)組區(qū)別簡(jiǎn)介及相互轉(zhuǎn)換實(shí)例
數(shù)組Array和集合的區(qū)別:
(1)數(shù)組是大小固定的,并且同一個(gè)數(shù)組只能存放類(lèi)型一樣的數(shù)據(jù)(基本類(lèi)型/引用類(lèi)型)
(2)JAVA集合可以存儲(chǔ)和操作數(shù)目不固定的一組數(shù)據(jù)。(3)若程序時(shí)不知道究竟需要多少對(duì)象,需要在空間不足時(shí)自動(dòng)擴(kuò)增容量,則需要使用容器類(lèi)庫(kù),array不適用。
聯(lián)系:使用相應(yīng)的toArray()和Arrays.asList()方法可以回想轉(zhuǎn)換。
List和ArrayList的區(qū)別
1.List是接口,List特性就是有序,會(huì)確保以一定的順序保存元素.
ArrayList是它的實(shí)現(xiàn)類(lèi),是一個(gè)用數(shù)組實(shí)現(xiàn)的List.
Map是接口,Map特性就是根據(jù)一個(gè)對(duì)象查找對(duì)象.
HashMap是它的實(shí)現(xiàn)類(lèi),HashMap用hash表實(shí)現(xiàn)的Map,就是利用對(duì)象的hashcode(hashcode()是Object的方法)進(jìn)行快速散列查找.(關(guān)于散列查找,可以參看<<數(shù)據(jù)結(jié)構(gòu)>>)
2.一般情況下,如果沒(méi)有必要,推薦代碼只同List,Map接口打交道.
比如:Listlist=newArrayList();
這樣做的原因是list就相當(dāng)于是一個(gè)泛型的實(shí)現(xiàn),如果想改變list的類(lèi)型,只需要:
Listlist=newLinkedList();//LinkedList也是List的實(shí)現(xiàn)類(lèi),也是ArrayList的兄弟類(lèi)
這樣,就不需要修改其它代碼,這就是接口編程的優(yōu)雅之處.
另外的例子就是,在類(lèi)的方法中,如下聲明:
privatevoiddoMyAction(Listlist){}
這樣這個(gè)方法能處理所有實(shí)現(xiàn)了List接口的類(lèi),一定程度上實(shí)現(xiàn)了泛型函數(shù).
3.如果開(kāi)發(fā)的時(shí)候覺(jué)得ArrayList,HashMap的性能不能滿足你的需要,可以通過(guò)實(shí)現(xiàn)List,Map(或者Collection)來(lái)定制你的自定義類(lèi).
List,Set轉(zhuǎn)換為數(shù)組的方法
toArray函數(shù)有兩種形式,一種無(wú)參數(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()]); }
反過(guò)來(lái),數(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類(lèi)型的數(shù)組也是如此,必須先轉(zhuǎn)換成相應(yīng)的wrapper類(lèi)型數(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)文章
SpringCloud實(shí)現(xiàn)灰度發(fā)布的方法步驟
本文主要介紹了SpringCloud實(shí)現(xiàn)灰度發(fā)布的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05SpringBoot整合WebSocket的客戶端和服務(wù)端的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot整合WebSocket的客戶端和服務(wù)端的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07完美解決Eclipse導(dǎo)入的項(xiàng)目上有個(gè)紅叉,但不影響項(xiàng)目運(yùn)行的問(wèn)題
這篇文章主要介紹了完美解決Eclipse導(dǎo)入的項(xiàng)目上有個(gè)紅叉,但不影響項(xiàng)目運(yùn)行的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01解決Druid動(dòng)態(tài)數(shù)據(jù)源配置重復(fù)刷錯(cuò)誤日志的問(wèn)題
使用druid數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)動(dòng)態(tài)的配置數(shù)據(jù)源功能,在配置過(guò)程中出現(xiàn)一個(gè)問(wèn)題既然是用戶自己配置的數(shù)據(jù)源,就無(wú)法避免輸入錯(cuò)誤,連接失敗等情況,關(guān)于這個(gè)問(wèn)題怎么處理呢,今天小編通過(guò)本文給大家詳細(xì)說(shuō)明下,感興趣的朋友一起看看吧2021-05-05SpringBoot項(xiàng)目配置postgresql數(shù)據(jù)庫(kù)完整步驟(配置多數(shù)據(jù)源)
PostgreSQL是一種特性非常齊全的自由軟件的對(duì)象-關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS),下面這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目配置postgresql數(shù)據(jù)庫(kù)(配置多數(shù)據(jù)源)的相關(guān)資料,需要的朋友可以參考下2023-05-05Spring Boot集成MyBatis實(shí)現(xiàn)通用Mapper的配置及使用
關(guān)于MyBatis,大部分人都很熟悉。MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。這篇文章主要介紹了Spring Boot集成MyBatis實(shí)現(xiàn)通用Mapper,需要的朋友可以參考下2018-08-08mybatis如何通過(guò)接口查找對(duì)應(yīng)的mapper.xml及方法執(zhí)行詳解
這篇文章主要給大家介紹了利用mybatis如何通過(guò)接口查找對(duì)應(yīng)的mapper.xml及方法執(zhí)行的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-06-06