2010-06-06 57 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