Я читаю в файле и храню его в t1. Как я получаю доступ к элементам в t1? Когда я пытаюсь распечатать его, я получаю адреса вместо значений. Также, каково различие между String
и 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
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));
}
Как я сказал в ваш другой вопрос , при создании собственного объекта Record вы можете реализовать функцию toString ()
для возврата разумного представления этой части информации.
Вы печатаете список с помощью массивов. В то время как классы List перегружают метод toString() для печати каждого элемента, массив использует стандартный toString, используемый Object, который печатает только имя класса и хэш идентификатора.
Чтобы вывести все элементы, вам придется либо просмотреть список List и вывести каждый массив с помощью Arrays.toString().
for(String[] ar:t1)System.out.print("["+Arrays.toString(ar)+"]");
Либо поместить каждый массив в List
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)
String []
- это массив строк. Вы печатаете адрес массива - когда вы видите [L
, это означает массив. Вы должны перебирать элементы каждого массива вместо того, чтобы печатать адрес:
String[] temp = t1.get(i);
for (int j = 0; j < temp.length; j++)
System.out.println(temp[j]);
Как упомянул Петр, ваш список - это список массивов строк, поэтому вы выводите массив, а не его содержимое.
Ленивый способ вывести содержимое массива - преобразовать массив в List
с помощью java.utils.Arrays.toString()
:
String[] stringArray=new String[] { "hello", world };
System.out.println(Arrays.toString(stringArray));
дает
["hello","world"]