2012-02-26 23 views
0

我有一些簡單,但解決不了。我只想添加一個字符列表到另一個。它使用String類型。爲什麼它不適用於charJava和使用方法進行的addAll名單<Character>

Character [] myChar={'a', 's', 'd','f', 't', 'i'}; 
List<Character> listChar= Arrays.asList(myChar); 
Character[] newChar= new Character[listChar.size()]; 
List<Character> newlistChar= Arrays.asList(newChar); 
Collections.fill(newlistChar, 'd'); 
output(newlistChar,"filled d"); 
Collections.addAll(listChar,newlistChar); // does not work 

我試圖做一些類似鑄造列表,但仍然有異常。

...((String)(listChar),(String)(newlistChar)) 

即使我使用這樣的東西它仍然會拋出和異常。那麼如何使用addAll和char

Collections.addAll(listChar,newlistChar.toArray(new Character[newlistChar.size()])); 
+0

請閱讀任何給定的答案或複製整個代碼它修復了我一個你的問題。你已經用另一種方式編輯你的問題,在6個人說不起作用後,將字符添加到固定大小的數組中。下一個代碼也是你的問題:'List listChar = Arrays。asList(myChar);' – 2012-02-26 10:25:14

回答

0

ListArrays.asList返回了固定大小。你不能添加任何東西。

取而代之的是,這兩個列表添加新ArrayList

+0

那爲什麼它可以和字符串一起工作? – Dima4u5 2012-02-26 10:00:08

+2

它沒有,你已經使用不同的代碼爲字符串。如果您不同意,請爲String提供相同的代碼。 – 2012-02-26 10:02:56

+0

感謝.correct,非常感謝)) – Dima4u5 2012-02-26 10:23:48

2
  • asList返回一個固定大小的列表,您不能添加元素。
  • Collections.addAll不接受列表作爲第二個參數

下次使用:

Character[] myChar = {'a', 's', 'd', 'f', 't', 'i'}; 
    List<Character> listChar = new ArrayList<Character>(Arrays.asList(myChar)); 
    Character[] newChar = new Character[listChar.size()]; 
    Arrays.fill(newChar, 'd'); 
    Collections.addAll(listChar, newChar); 
+0

它之遙 - >在線程異常 「主要」 java.lang.UnsupportedOperationException \t在java.util.AbstractList.add(來源不明) \t在java.util.AbstractList.add (Unknown Source) \t at java.util.Collections.addAll(Unknown Source) – Dima4u5 2012-02-26 10:11:15

+1

注意第二行。 – 2012-02-26 10:15:12

0

你讀過的javadoc of Collections.addAll()

它的簽名是

public static <T> boolean addAll(Collection<? super T> c, 
           T... elements) 

這意味着,第二個參數是一個可變參數。因此你可以通過字符,或個性實例的數組:

List<Character>是無效的類型爲第二個參數。

一個好辦法知道是實際讀取的編譯器錯誤消息。通常情況下,它們比「不起作用」更具信息量。

而另一個問題是,Arrays.asList()返回的名單有一個固定的大小。你不能添加任何東西給他們。

3

除非這是[homework],你應該使用StringBuilder或只是簡單的字符串。

// Using String 
String myChars = "asdfti"; 
char[] ds = new char[mychars.length()]; 
Arrays.fill(ds, 'd'); 
myChars += new String(ds); 
+0

這不是家庭作業,它是我配置的YouTube視頻)) – Dima4u5 2012-02-26 10:51:23

+1

在這個原因中,不要使用任何低級別的字符作爲'char []',只要使用'String'或'string'(取決於語言)如果你的家庭作業和你已經被告知,那麼你就應該努力工作。 ;) – 2012-02-26 13:28:17

0

此代碼片段有幫助嗎?

ArrayList<Character> myChar = new ArrayList<Character>(); 
    myChar.add('a'); 
    myChar.add('s'); 
    myChar.add('d'); 
    myChar.add('f'); 
    myChar.add('t'); 
    myChar.add('i'); 

    ArrayList<Character> newlistChar= new ArrayList<Character>(); 
    newlistChar.add('d'); 

    myChar.addAll(newlistChar); 
0

變化的最後一行到

Collections.addAll(listChar,newlistChar.toArray(新字符[newlistChar.size()]));

相關問題