Java 无法输出ArrayList内容
我正在读取一个txt文件,其中每行包含一个单词,从非字母数字字符中剥离该单词,并将结果存储到数组列表中Java 无法输出ArrayList内容,java,arraylist,string-split,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&
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();
}
}
}
公共类LeeArchivo
{
公共静态void main(字符串args[])引发IOException
{
尝试
{
BufferedReader选择器=null;
列表矩阵=新的ArrayList();
lector=new-BufferedReader(新的文件阅读器(“西班牙语.txt”);
字符串行=null;
而((line=lector.readLine())!=null)
{
//矩阵。添加(行);
矩阵.add((行.split([^a-zA-Z0-9'])).toString());
}
系统输出打印LN(矩阵);
System.out.println(matrix.size());
}捕获(IOE异常)
{
e、 printStackTrace();
}
}
}
当我试图打印ArrayList的内容时,我得到的只是每个String对象的内存地址。有趣的是,如果我不拆分行,即:我只是矩阵。添加(行)我得到字符串Ok。
我尝试过StringBuilder、迭代器、.toString,但都不管用。
有人能帮我了解这里发生了什么吗?
谢谢。行.split([^a-zA-Z0-9'])调用返回字符串数组。不是一串。
因此,您不是在向数组列表中添加字符串实例,而是将字符串数组对象添加到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);
}
为什么要在add方法中添加一组额外的参数?谢谢,我现在明白了。但是,如果我不调用toString()方法调用,我会在矩阵中得到一个错误。add()表示:类型列表中的add(String)方法不适用于参数(String[]),我该怎么做呢?知道了。为什么toString()仍然在拆分之后?@Rob Right you。我的错。更正。