无法输出ArrayList内容

时间:2013-11-29 18:11:03

标签: java arraylist string-split

我正在读取每行包含一个单词的txt文件,从非字母数字字符中删除该单词并将结果存储到数组列表中。

public class LeeArchivo 
{   

public static void main(String args[]) throws IOException
{
    try
    {   

        BufferedReader lector = null;
        List<String> matrix  = new ArrayList<String>();

        lector = new BufferedReader(new FileReader("spanish.txt"));
        String line = null;

        while((line = lector.readLine())!=null)
        {
            //matrix.add(line);
            matrix.add((line.split("[^a-zA-Z0-9']").toString()));     
        }   

        System.out.println(matrix);
        System.out.println(matrix.size());
    } catch (IOException e)
    {
        e.printStackTrace();
    }

}
}

当我尝试打印ArrayList的内容时,我得到的是每个String Object的内存地址。有趣的是,如果我不分割线即:我只是matrix.add(线)我得到了Strings Ok。 我已经尝试过StringBuilders,Iterators,.toString,但没有任何作用。 有人可以帮我理解这里发生了什么吗? 感谢。

1 个答案:

答案 0 :(得分:0)

line.split("[^a-zA-Z0-9']")调用返回一个String数组。不是字符串。 因此,您不是在数组列表中添加String实例,而是在String数组对象toString()方法调用的结果 - String数组对象的内存地址。

如果你需要在拆分后得到整个字符串,你应该连接所有字符串 数组的元素,例如:

while((line = lector.readLine())!=null) {

    String[] arr = line.split("[^a-zA-Z0-9']");
    String res = "";

    for(String s : arr) {
        res += s;
    }

    matrix.add(res);    
}