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