我有一个文件逐行扫描到ArrayList中。 然后我创建一个新的ArrayList,我想暂时存储该行,以便我可以访问某些值。
实施例。 IDname(制表符)的ID号(制表符)表决(制表符)日期
因此,我创建名为voteSubmission的临时ArrayList,并遍历fileRead数组中的每个String。
为什么我的split方法的错误类型不兼容?
ArrayList<String> voteSubmission = new ArrayList<String>();
for(String x : fileRead)
{
voteSubmission = x.split("\t");
}
答案 0 :(得分:3)
split
method返回一个数组,而不是ArrayList
。
使用数组或手动将其转换为ArrayList
。
答案 1 :(得分:2)
x.split("\t");
此函数将返回一个数组而不是数组列表
split函数声明:
将此字符串拆分为给定正则表达式的匹配项。
此方法的工作方式就像通过调用双参数split方法一样 给定的表达式和一个零的限制参数。尾随空 因此,字符串不包含在结果数组中。
退货:
通过在匹配项中拆分此字符串计算的字符串数组 给定的正则表达式
您可以尝试更改代码:
ArrayList<String> voteSubmission = new ArrayList<String>();
for(String x : fileRead)
{
for(String value: x.split("\t"))
{
voteSubmission.add(value);
}
}
答案 2 :(得分:0)
错误是:Type mismatch: cannot convert from String[] to ArrayList<String>
这表示x.split("\t")
提供String[]
数组,但您将其分配给ArrayList
。
如果你希望它是一个ArrayList,你必须像这样转换它:
new ArrayList<String>(Arrays.asList(x.split("\t")));
但是因为你在循环中这样做,所以你可能希望将所有数组存储在ArrayList中。为此,您必须创建一个String []类型的ArrayList,如下所示:
ArrayList<String[]> voteSubmission = new ArrayList<String[]>();
for(String x : fileRead){
voteSubmission.add((x.split("\t")));
}
答案 3 :(得分:0)
split()的输出是string []数组的类型,并且您尝试分配给不兼容的ArrayList类型。
将您的代码更改为
ArrayList<String> voteSubmission = new ArrayList<String>();
for(String x : fileRead)
{
String arr[] = x.split("\t");
if(arr != null && arr.length > 0)
{
for(String value: arr)
{
voteSubmission.add(value);
}
}
}