2010-06-06 58 views
6

我正在读取文件并将其存储在t1中。我如何访问t1中的元素?当我尝试打印它时,我得到的是地址而不是值。 StringString[]之间的区别是什么?打印和访问列表<String[]>

 CSVReader reader = new CSVReader(new FileReader("src/new_acquisitions.csv")); 
     List <String[]> t1 = reader.readAll(); 

     int i = 0 
     while(i < t1.size()) { 
      System.out.println(t1.get(i)); 
      i++; 
     } 

输出:

[Ljava.lang.String;@9304b1 
[Ljava.lang.String;@190d11 
[Ljava.lang.String;@a90653 
[Ljava.lang.String;@de6ced 
+0

感谢所有帮助下像=打印清单内容] – nubme 2010-06-06 08:58:53

+0

记得“接受”的答案最帮助你(使用绿色复选标记)。 – Jonik 2010-06-06 11:50:16

回答

19

的String []是一个字符串数组,因此它不打印如您所期望的原因,请尝试:

for (int i = 0; i < t1.size(); i++) { 
    String[] strings = t1.get(i); 
    for (int j = 0; j < strings.length; j++) { 
     System.out.print(strings[j] + " "); 
    } 
    System.out.println(); 
} 

或者更简洁:

for (String[] strings : t1) { 
    for (String s : strings) { 
     System.out.print(s + " "); 
    } 
    System.out.println(); 
} 

或更好:

for (String[] strings : t1) { 
    System.out.println(Arrays.toString(strings)); 
} 
+0

有没有办法在没有循环的Java 8中执行相同的操作? – chandresh 2017-05-24 12:08:35

0

String[]是一个字符串数组。你打印数组的地址 - 当你看到[L这意味着一个数组。你必须通过每一个数组中的元素进行迭代,而不是打印地址:

String[] temp = t1.get(i); 
for (int j = 0; j < temp.length; j++) 
    System.out.println(temp[j]); 
4

由于斯托提到的,您的列表是字符串数组的列表,所以你要打印出数组,而不是数组内容。

懒惰方式打印出数组内容是到阵列转换为字符串与java.utils.Arrays.toString()

String[] stringArray=new String[] { "hello", world }; 
System.out.println(Arrays.toString(stringArray)); 

给出

[ “你好”, “世界”]

+0

“将数组转换为列表” - 转换为字符串,也许? – Jonik 2010-06-06 11:46:53

+0

的确如此。 :)编辑.... – CuriousPanda 2010-06-06 17:12:58

1

您使用数组打印列表。虽然List类通过重载toString()方法来打印每个元素,但该数组使用Object使用的默认toString,它只打印类名和标识哈希。

要打印所有您必须遍历列表并使用Arrays.toString()打印每个数组。

for(String[] ar:t1)System.out.print("["+Arrays.toString(ar)+"]"); 

或者你把每个数组列表

List<List<String>> tt1 = new ArrayList<List<String>>(); 
for(String[] ar: t1)tt1.add(Arrays.asList(ar));//wraps the arrays in constant length lists 
System.out.println(tt1) 
0

正如我在your other question说,创建自己的记录对象时,你可以实现toString()函数返回那块合理表征信息。

0

您可以通过简单地首先把清单中排列,然后用Arrays.toString

System.out.println(Arrays.toString(your_list.toArray()); 
+0

对我来说,它不提供正确的输出。 – 2017-04-23 12:49:38