Java和使用方法addAll for List <character> </character>

时间:2012-02-26 09:50:18

标签: java

我有一些简单的东西,但无法解决。我只想将一个字符列表添加到另一个字符列表中。它与String类型一起使用。为什么它不适用于char

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()]));

6 个答案:

答案 0 :(得分:3)

除非这是[homework],否则你应该使用StringBuilder或只使用普通的String。

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

答案 1 :(得分: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);

答案 2 :(得分:0)

Arrays.asList返回的

List具有固定大小。你不能添加任何东西。

而是将两个列表添加到新ArrayList

答案 3 :(得分:0)

您是否阅读过javadoc of Collections.addAll()

它的签名是

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

这意味着第二个参数是varargs。因此,您可以传递一个字符数组或单个字符实例:

Collections.addAll(listChar, new Character[] {'a', 'b'});
Collections.addAll(listChar, Character.valueOf('a'), Character.valueOf('b'));

List<Character>是第二个参数的无效类型。

知道的一个好方法是实际读取编译器错误消息。通常,它们比“它不起作用”提供更多信息。

另一个问题是Arrays.asList()返回的列表具有固定大小。你无法向他们添加任何东西。

答案 4 :(得分: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);

答案 5 :(得分:0)

将最后一行更改为

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