溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java集合與數(shù)組區(qū)別簡介及相互轉(zhuǎn)換實(shí)例

發(fā)布時(shí)間:2020-09-18 00:04:40 來源:腳本之家 閱讀:177 作者:annie-baby 欄目:編程語言

數(shù)組Array和集合的區(qū)別:

(1)數(shù)組是大小固定的,并且同一個(gè)數(shù)組只能存放類型一樣的數(shù)據(jù)(基本類型/引用類型)

(2)JAVA集合可以存儲(chǔ)和操作數(shù)目不固定的一組數(shù)據(jù)。(3)若程序時(shí)不知道究竟需要多少對象,需要在空間不足時(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è)對象查找對象.

HashMap是它的實(shí)現(xiàn)類,HashMap用hash表實(shí)現(xiàn)的Map,就是利用對象的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)換為List,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);

注意:對于int[]數(shù)組不能直接這樣做,因?yàn)閍sList()方法的參數(shù)必須是對象。應(yīng)該先把int[]轉(zhuǎn)化為Integer[]。對于其他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ū)別簡介及相互轉(zhuǎn)換實(shí)例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

Java控制臺(tái)輸入數(shù)組并逆序輸出的方法實(shí)例

Java數(shù)組的擴(kuò)容代碼示例

java數(shù)組基礎(chǔ)詳解

如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI