用Java中的Tabs拆分

时间:2013-11-20 19:37:13

标签: java string split

我有一个文件逐行扫描到ArrayList中。 然后我创建一个新的ArrayList,我想暂时存储该行,以便我可以访问某些值。

实施例。 IDname(制表符)的ID号(制表符)表决(制表符)日期

因此,我创建名为voteSubmission的临时ArrayList,并遍历fileRead数组中的每个String。

为什么我的split方法的错误类型不兼容?

ArrayList<String> voteSubmission = new ArrayList<String>(); 
for(String x : fileRead)
{
voteSubmission =  x.split("\t");
}

4 个答案:

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