2015-11-13 97 views
0

我需要最終字符數組爲{'a','u','o'}。但現在的錯誤在線程搜索字符arraylist某些字符

異常 「主」 java.lang.UnsupportedOperationException在 java.util.AbstractList.remove(來源不明)在 xyz.jayakumar.test1.DiffCharArray.main(DiffCharArray.java: 67)

Character[] c = {'a','b','c','e'}; 
Character[] p = {'b', 'c','e','u','o'}; 
//List<Character> fl = new ArrayList(Arrays.asList(c)); 
List<Character> fl = Arrays.asList(c); 
for(char x : p) 
{ 
System.out.println(x); 
if(fl.contains(x)) 
{ 
//System.out.println("hello"); 
fl.remove(x); 
} 
else 
{ 
fl.add(x); 
} 
} 
System.out.println(fl); 
+0

請正確格式化您的代碼以及執行文本。 – Turing85

+0

只是爲了驗證 - 您正在嘗試爲'c'創建也出現在'p'中的字符列表? – Mureinik

+0

請幫我一下。 我只需要a,u,o來自這兩個char數組 Character [] c = {'a','b','c','e'}; Character [] p = {'b','c','e','u','o'}; – Jayakumar

回答

0

Arrays.asList()返回不可變列表。您應該取消註釋List<Character> fl = new ArrayList(Arrays.asList(c));線和評論List<Character> fl = Arrays.asList(c);

 Character[] c = {'a','b','c','e'}; 
     Character[] p = {'b', 'c','e','u','o'}; 
     List<Character> fl = new ArrayList(Arrays.asList(c)); 
     //List<Character> fl = Arrays.asList(c); 
     for(char x : p) 
     { 
     System.out.println(x); 
     if(fl.contains(x)) 
     { 
     //System.out.println("hello"); 
     fl.remove(new Character(x)); 
     } 
     else 
     { 
     fl.add(x); 
     } 
     } 
     System.out.println(fl); 

你應該刪除通過焦炭的包裝對象(即字符)的方法,其他明智的ASCII碼將被視爲指標。所以會有歧義。

+0

它的工作原理和非常感謝的兄弟......! – Jayakumar

+0

@Jayakumar最受歡迎。 – Rehman

1

List<Character> fl = Arrays.asList(c);這將創建一個由數組支持的List,所以你不能添加或從該列表中刪除,請使用 List<Character> fl = new ArrayList<Character>(Arrays.asList(c));代替。

+0

不工作再次錯誤 – Jayakumar

+0

@Jayakumar剛剛注意到你的'p'包含5個字符,而你的''c'包含4,這就是爲什麼你會得到'java.lang.IndexOutOfBoundsException' – Ramanlfc

+0

@Ramanlfc NO。它會拋出IOOE異常,因爲remove()方法會將char的ascii代碼作爲索引 – Rehman

0

Arrays.asList返回一個不可變的集合,你需要把這個包裝在另一個List中。 new ArrayList(fl)