2013-08-30 57 views
-2

我嘗試下面的代碼, 它僅適用於1個陣列,當我嘗試添加另一個,它拋出運行時間異常如何將2個整數數組的內容放入1個單一數組列表中?

Exception in thread "main" java.lang.UnsupportedOperationException 
    at java.util.AbstractList.add(Unknown Source) 
    at java.util.AbstractList.add(Unknown Source) 
    at general.ArrToArrList.main(ArrToArrList.java:32) 

該代碼是

import java.util.Arrays; 
import java.util.Iterator; 
import java.util.List; 
import java.util.ArrayList; 

public class ArrToArrList { 
    public static void main(String[] args) { 
     Integer[] nums = new Integer[5]; 
     nums[0] = 2; 
     nums[1] = 4; 
     Integer[] nm = { 3, 5, 7 }; 
     List intList = (Arrays.asList(nums)); 
     List intList2 = (Arrays.asList(nm)); 
     intList.addAll(Arrays.asList(nm)); 
     for (Integer i : intList) { 
      System.out.println(i); 
     } 
    } 
} 
+0

請確保正確格式化您的代碼。在輸入框的底部有一個實時預覽。 – chrylis

+0

import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.ArrayList; 公共類ArrToArrList { 公共靜態無效的主要(字串[] args) { \t 整數[] NUMS =新的整數[5]; nums [0] = 2; nums [1] = 4; Integer [] nm = {3,5,7}; 列表 intList =(Arrays.asList(nums)); 列表 intList2 =(Arrays.asList(nm)); intList.addAll(Arrays.asList(nm)); (Integer i:intList) (整數i:intList) \t System.out.println(i); } } } – sweety123

+0

@ sweety123從下次開始,請格式化您的代碼和帖子。 –

回答

4

the actual contract for Arrays#asList()。它會生成一個List,它只是現有數組的一個包裝,並且不支持可調整數組大小的任何操作。

如果您想要組合陣列,您需要創建一個新的List可調整大小的對象。嘗試

List<Integer> intList = new ArrayList<Integer>(Arrays.asList(nums)); 
intList.addAll(Arrays.asList(nm)); 
+0

謝謝你chrylis – sweety123

3

Arrays.asList返回固定尺寸List 。即不能添加或去除元素。裹的asList結果在新ArrayList允許元素添加

List<Integer> intList = new ArrayList<>(Arrays.asList(nums)); 
2

Arrays.asList將數組包裝爲一個列表。數組無法生長或縮小,因此您無法從此列表中添加或移除元素。

你打算也許是什麼

List<Integer> intList = new ArrayList<Integer>(Arrays.asList(nums)); 
0

Arrays.asList返回底層陣列的一個固定大小的看法:

返回由指定數組支持的固定大小的列表。 1

你不能把更多的元素融入到返回List比有在數組中。

你需要複製成java.util.ArrayList(易混淆Arrays.asList返回java.util.Arrays.ArrayList這是不一樣的東西。)

final List<Integer> list = new ArrayList<Integer>(Arrays.asList(myArray)); 
2

List小號創建使用Arrays.asList具有固定的大小,因此不能添加其他元素列表。您可以創建一個新的正常ArrayList和所有元素添加到列表中,這樣的:

Integer[] nums = new Integer[5]; 
nums[0] = 2; 
nums[1] = 4; 
Integer[] nm = { 3, 5, 7 }; 
List intList = (Arrays.asList(nums)); 
List intList2 = (Arrays.asList(nm)); 
List mergeList = new ArrayList(); 
mergeList .addAll(Arrays.asList(nums)); 
mergeList .addAll(Arrays.asList(nm)); 
for (Integer i : mergeList) { 
    System.out.println(i); 
} 
0

你從Arrays.asList獲取列表不可變。所以你需要使用new運算符將它分配給intList。

2

如果使用

List intList = (Arrays.asList(nums)); 

它給人型java.util中的實際對象。數組$ ArrayList中具有執行情況

public void add(int index, E element) { 
    throw new UnsupportedOperationException(); 
} 

但如果你使用

List intList = new ArrayList<Integer>(Arrays.asList(nums); 

它會給你一個類型java.util.ArrayList中的實際對象。這是不同的。這實際上是導致此異常的原因

相關問題