導航:首頁 > 編程語言 > javaarraysaslist

javaarraysaslist

發布時間:2022-05-17 04:58:01

① 關於java集合的一個問題,怎麼把一個數組添加到List集合

在第10行定義list的時候類型定義為數組類型就行。

ArrayList<int[]> list=new ArrayList<>();

如果list是按bean對象存,則對象要改變:之前List對象存2個屬性:DepartID,num,添加後的對象有3個屬性:DepartID,num,dpsNum,所以要定義新的List對象來存兩個List的結果。(見下面代碼,已調通,1個main類,3個對象類)。

如果list是按string存而非bean對象,則for循環遍歷list1後,將list2字元串拼接到list1末尾,再覆蓋進list1對應結果中就行,list1.set(index,list1.get(index)+list2.get(index)),類似這句,沒調試過。

(1)javaarraysaslist擴展閱讀:

Java中的集合類可以分為兩大類:一類是實現Collection介面;另一類是實現Map介面。

Collection是一個基本的集合介面,Collection中可以容納一組集合元素(Element)。

Java提供了對象的數種保存方式,除了內置的數組以外,其餘的稱為集合類。為了使程序方便地存儲和操縱數目不固定的一組數據,JDK中提供了Java集合類,所有Java集合類都位於Java.util包中,與Java數組不同,Java集合不能存放基本數據類型數據,而只能存放對象的引用。

② Arrays.asList()是什麼意思,有什麼用

Arrays.asList()
將一個數組轉化為一個List對象,這個方法會返回一個ArrayList類型的對象, 這個ArrayList類並非java.util.ArrayList類,而是Arrays類的靜態內部類!用這個對象對列表進行添加刪除更新操作,就會報UnsupportedOperationException異常。

③ aslist方法

import java.util.Arrays;
import java.util.List;

/**
*
* 本類演示了Arrays類中的asList方法
* 通過四個段落來演示,體現出了該方法的相關特性.
*
* (1) 該方法對於基本數據類型的數組支持並不好,當數組是基本數據類型時不建議使用
* (2) 當使用asList()方法時,數組就和列表鏈接在一起了.
* 當更新其中之一時,另一個將自動獲得更新。
* 注意:僅僅針對對象數組類型,基本數據類型數組不具備該特性
* (3) asList得到的數組是的沒有add和remove方法的
*
* 閱讀相關:通過查看Arrays類的源碼可以知道,asList返回的List是Array中的實現的
* 內部類,而該類並沒有定義add和remove方法.另外,為什麼修改其中一個,另一個也自動
* 獲得更新了,因為asList獲得List實際引用的就是數組
*/
public class AsListTest {

public static void main(String[] args) {

/* 段落一:基本數據類型使用asList中的問題 */

/* 說明:雖然在JDK1.6中能夠將基本數據類型的數組轉換成List,但還是有個缺陷 */
int[] a_int = { 1, 2, 3, 4 };
/* 預期輸出應該是1,2,3,4,但實際上輸出的僅僅是一個引用, 這里它把a_int當成了一個元素 */
List a_int_List = Arrays.asList(a_int);
foreach(a_int_List);
/* 為此我們需要這樣遍歷其中元素 */
foreachForBase(a_int_List);

/* 段落二:對象類型的數組使用asList,是我們預期的 */
Integer[] a_Integer = new Integer[] { 1, 2, 3, 4 };
List a_Integer_List = Arrays.asList(a_Integer);通過源碼,我們可以看出來asList方法接收一個泛型化的可變參數列表,當傳入一個基本數據類型的數組的時候,它會把這個基本數據類型的數組當做一個參數傳入,然後返回一個新的ArrayList,其中a就是這個基本類型的數組,所以可變參數列表只接收了一個參數就是數組。當傳入一個包裝類型對象數組的時候,其中數組中的每一個元素都是一個對象,所以可變參數列表會傳入五個對象類型Integer,還有一點是因為基礎數據類型是不能被泛型化的,所以才會導致上面代碼運行的結果。

注意點:在使用集合等的時候,如果需要使用到泛型,需要保證的是不要使用基礎數據類型為泛型參數,這樣是一種錯誤的做法。

④ java數組添加元素的方法

向數組里添加一個元素怎麼添加,這兒總結有三種方法:
1、一般數組是不能添加元素的,因為他們在初始化時就已定好長度了,不能改變長度。
但有個可以改變大小的數組為ArrayList,即可以定義一個ArrayList數組,然後用add(element)方法往裡添加元素即可,還可add(index,element)往指定下標處添加元素;例子如下:
List
list=new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(2,4);
System.out.println(list);
1
2
3
4
5
6
1
2
3
4
5
6
列印結果: [1, 2, 4, 3]
2、思路為先把array轉化為list,用list的add()方法添加元素,再把list轉化為array。
但這兒會有一個陷阱盲區,在把array轉化為list的過程中,使用的asList()方法會返回一個final的,固定長度的ArrayList類,並不是java.util.ArrayList,直接這樣利用它進行add()或remove()是無效的。
List
list=new ArrayList();
list=Arrays.asList(sz);
list.add(5);
1
2
3
1
2
3
那應該怎麼做呢,在定義list的時候就直接對array進行轉化,代碼如下:
(注意這兒Array類型是包裝類,若是一般數據類型記得轉化,轉化參考我其他博客文章。)
//如 List
list=new ArrayList();
// list=Arrays.asList(str);
//這樣不行,須如下:
Integer []sz={3,2};
List
list=new ArrayList(Arrays.asList(sz));//**須定義時就進行轉化**
list.add(1,5);
Integer[] nsz=new Integer[list.size()];
list.toArray(nsz);
System.out.println(Arrays.toString(nsz));
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
結果輸出為:[3, 5, 2]
3、第三個方法思路為創建一個新數組,新數組的大小為舊數組大小+1,把舊數組里的元素一份進新數組,並把要添加的元素添加進新數組即可。

⑤ 請教關於java中的Arrays.asList的用法

import java.util.*;

class Snow {}
class Powder extends Snow {}
class Crusty extends Snow {}
class Slush extends Snow {}

class Light extends Powder {}
class Heavy extends Powder {}

public class ArrayListClass {
public static void main(String[] args) {
List<Snow> snow1 = Arrays.asList(
new Crusty(), new Slush(), new Powder(),new Light(),new Heavy() );
//進行的對比
List<Snow> snow3 = new ArrayList<Snow>();
Collections.addAll(snow3, new Light(), new Heavy());
}
}

⑥ 【JAVA】求教!Arrays.asList()方法在這個程序中是怎麼運行的

無語,LS的居然復制我的回答。

我剛才試了1下, 這樣是可以的。
List<Powder> snow2=Arrays.asList(new Light(),new Heavy() );

我發現當有兩個條件的時候,可以實現List<x1> x=Arrays.asList(new x2(),new x3());

首先,x1必須是x2,x3的直屬父類(也就是說x2,x3都是繼承自x1),第2,必須至少有2個繼承類的申明才能通過編譯

也就是說
class Light extends Powder{}//必須得至少有2個類繼承。
class Heavy extends Powder{}

List<Powder> snow2=Arrays.asList(new Light(),new Heavy() );
經過嘗試,這一句,如果變成
List<Powder> snow2=Arrays.asList(new Light());就無法通過編譯。
就算Powder這個類只有1個繼承類Light,也是一樣無法通過編譯。
也就是說這種情況無法通過編譯:

class Light extends Powder{}
//class Heavy extends Powder{} 將這一個類注釋掉,也就是說現在Powder只有1個繼承類Light了。那麼:
List<Powder> snow2=Arrays.asList(new Light());這1句無法通過編譯。

也就是說:要滿足2個條件才能讓
List<x1> x=Arrays.asList(new x2(),new x3());通過編譯。
第1個已經說了。 第2個就是x1至少有2個繼承類,比如x2,x3並且在使用asList的時候,都要將x2,x3丟到asList()裡面:
Arrays.asList(new x2(),new x3()),

才能通過聲明。

但是有1個問題,如果有100個類繼承名為X1的基類,那是不是要把100個子類的都丟到asList里呢,比如這樣:Arrays.asList(new x1(),new x2()……new x100()) 呢?

我的試驗結果是:不需要。 List<x1> x =Array.asList(),這1句的asList裡面,最少只用丟2個x1的繼承類的對象就可以通過編譯了。
List<x1> x=Arrays.asList(new x2(),new x3())

但是具體為什麼會這樣,我也沒想明白哈

⑦ java arrays.aslist干什麼用的

把數組轉換成集合

⑧ 關與java中Arrays.asList(T...t),用Collection接收一個asList返回的ArrayList出現問題……

集合類並沒有提供修改大小的方法,它的大小隨著元素個數的增加而增大,隨著元素個數的減少而變小。以前是沒有泛型這種東西的,集合中加入任何內容都會轉變成Object類型,取出來的時候又要強制轉換成所需要的類型,相當的麻煩,而且向下轉型的時候容易出錯。泛型的出現大大提高了編程的效率,而且檢查錯誤更加容易,jdk5.0之後如果不加泛型會警告,但是不會出錯,因為泛型只是編譯的概念,並不是語的法強制要求

⑨ Array.asList()函數的使用問題【JAVA】

無語

為什麼在我的機器上編譯。 連第一個引用都通不過呢?
C:\shiyan123.java:19: 不兼容的類型

找到: java.util.List<Power>
需要: java.util.List<Snow>

似乎根本就無法這樣引用。

我試了第2次,似乎可以這樣:
List sonw1=Arrays.asList(new Power());
sonw1.add(Arrays.asList(new light()));
也就是說,1開始聲明1個list的時候,壓根就不聲明類型。```直接 List xxx=xxx;

而這樣做是可以的,但是卻會產生 一個異常···UnsupportedOperationException。
無語。

根據剛才的經驗,本人再次試驗,原因肯定就處在Arrays.asList上。
我剛才試了一下,可以這樣: List<Snow> sonw1=new ArrayList<Snow>();
sonw1.add(new Power());
sonw1.add(new light());
也就是說,本身容器類是支持向上轉型的。
而List<snow> snow1=Arrays.asList();問題應該就出在這1句上面。
API上面這樣寫asList的:返回一個受指定數組支持的固定大小的列表。
將一個指定數組的固定大小的list列表,也就是先前編譯時候下面給的提示:
找到: java.util.List<Power>
需要: java.util.List<Snow>
也就是說,先前可能是:將一個List<Power>類的容器對象,賦給了一個List<Sonw>的引用(也就是大概相當於這樣):List<Snow> xx=new ArrayList<Power>();因為這中間無法發生向上轉型。所以匹配錯誤。
而當首先創建一個List<Snow> sonw1=new ArrayList<Snow>(); 這樣,就創建了一個List<Snow>類的容器對象,並且賦給了一個List<Snow>類的引用。
那麼,再添加Snow類的子類。sonw1.add(new light()); 似乎就是順理成章的事情了。

事實上,我後來試驗,List<Snow> sonw1=new ArrayList<Power>(); 這樣根本就無法通過編譯。 你剛才的 List<Snow> snow1=Arrays.asList(new Power),基本上應該等於這句了List<Snow> sonw1=new ArrayList<Power>();
當創建1對對象的容器時:List<xxx> snow1=new ArrayList<xxx>,兩邊的中括弧裡面的XXX應該是同一個類。 要不然,類型就不匹配。

⑩ 為什麼Java里的Arrays.asList不能用add和remove方法

因為Arrays.asList方法中是新生成了一個沒有實現add和remove方法的ArrayList。

閱讀全文

與javaarraysaslist相關的資料

熱點內容
怎麼用返利app返利 瀏覽:125
java代碼快速 瀏覽:239
單片機左移右移後是補1還是0 瀏覽:595
湛江一號命令 瀏覽:333
導出命令行 瀏覽:274
C和php交互 瀏覽:600
蘋果手機里的通訊錄如何導入安卓手機 瀏覽:170
怎麼在京東app裡面看自己會員等級 瀏覽:43
emerson伺服器怎麼短接啟動 瀏覽:559
工控編程人員工資 瀏覽:397
速成義大利語pdf 瀏覽:250
連續加減乘除法的演算法 瀏覽:653
用mfc編程實現dda演算法 瀏覽:43
linux命令打開應用 瀏覽:147
改造後的程序員 瀏覽:270
數控編程變數 瀏覽:785
江門哪裡有plc編程系統 瀏覽:379
安卓手機如何下載外服b站 瀏覽:702
pythonetree庫 瀏覽:761
數據插值演算法 瀏覽:725