У меня есть файл CSV. В нем много линий. В каждой строке несколько значений, разделенных запятыми.
Я использую OPENCSV для извлечения данных из файла. Я хочу иметь возможность напрямую переходить к любой конкретной строке, которая находится в структуре данных List.
CSVReader reader = new CSVReader(new FileReader(
"myfile.csv"));
try {
List<String[]> myEntries = reader.readAll();
for (String[] s : myEntries) {
System.out.println("Next item: " + s);
}
} catch (IOException e) {
e.printStackTrace();
}
Это печатает
Next item: [Ljava.lang.String;@6c8b058b
Next item: [Ljava.lang.String;@1b192059
Next item: [Ljava.lang.String;@e9ac0f5
Next item: [Ljava.lang.String;@51f21c50
Next item: [Ljava.lang.String;@6e20f237
Next item: [Ljava.lang.String;@34fe315d
Next item: [Ljava.lang.String;@1c5aebd9
Next item: [Ljava.lang.String;@1532021a
Next item: [Ljava.lang.String;@62803d5
Next item: [Ljava.lang.String;@2d13981b
Next item: [Ljava.lang.String;@61672bbb
Я хочу знать, могу ли я получить доступ к отдельным строкам, элементам через List.
т.е.
1,2,3,4,5
6,7,8,9,10
11,12,13,14
15,16,17,18
Я хочу String [] nextLine = 1,2,3,4,5 (где nextLine [0] = 1 nextLine [1] = 2 и т. Д.), А в следующей итерации nextLine должно быть 6,7 , 8,9,10 и т. Д.
На данный момент:
for (String[] s : myEntries) {
System.out.println("Next item: " + s);
}
Вам необходимо объединить массив строк в строку. Проверьте это сообщение: Метод, чтобы полностью изменить эффект Java String.split ()?
String [] - это массив строк. Такой массив внутренне является классом. Как и все классы, которые явно не расширяют какой-либо другой класс, он расширяет Object неявно. Метод toString()
класса Object по умолчанию дает вам представление, которое вы видите: имя класса, сопровождаемое @, за которым следует шестнадцатеричный хеш-код. Поскольку класс String [] не переопределяет метод toString (), в результате вы получите его.
Создайте некоторый метод, который выводит элементы массива для вас. Выполните итерацию по массиву и используйте System.out.print()
(не print * ln *) для элементов.
Проверьте функцию разбиения строки Здесь и используйте что-то вроде этого String[] results = input.split("\\s+");
. Бит регулярного выражения разбивается на пустые пространства, это должно сработать