所以,根据这个问题,我用java编写了以下代码:
public class example {
static ArrayList<String[]> test = new ArrayList<String[]>();
private String[] a = {"this", "is,", "a test"};
private String[] b = {"Look", "a three-headed", "monkey"};
public void fillTest() {
test.add(a);
test.add(b);
// so far so good, I checked this method
// with a System.out.print and it works
}
// later in the code I have a method that try
// to take the arrayList test and copy it into
// a String[] named temp. In my vision temp
// should than be accessed randomly by the
// method itself and the content printed out
// from temp should be removed from test -
// that's why I'm using an ArrayList
public void stuff() {
// some stuff
// runtime error happens here:
String[] temp = test.toArray(new String[test.size()]);
// other stuff that never made it to runtime
}
}
问题是,虽然编译器对此没有任何异议,但在运行时,我得到以下错误:
线程“main”java.lang.arraystoreexception中出现异常:arraycopy:元素类型不匹配:无法将java.lang.object[]的元素之一强制转换为目标数组java.lang.string的类型
我无法理解背后的原因-在我看来,我要求它用字符串填充字符串数组,那么为什么会出现错误呢?
2条答案
按热度按时间2uluyalo1#
你可以用
Stream.flatMap
方法来展平此字符串数组列表,并在单个字符串数组上获取流。然后你可以得到一个包含这个流元素的数组:另请参阅:是否有任何方法可以仅使用“map”而不使用“flatmap”将2d列表转换为1d列表?
gojuced72#
您正在尝试转换
List
其元素是String
数组的元素String
s。这不起作用,因为String
不是一个String
.相反,您可以将
List
数组到二维数组String
学生:如果要将
List
在单个数组中String
,你必须做一些处理。与Stream
可通过以下方式完成: