У меня есть CSV-файл, каждая строка которого отформатирована как: 20 символов строки, 10 символов строки, 4 строки символов и двойной тип.
Цель состоит в том, чтобы прочитать файл и сохранить информацию в коллекции списков. .
затем сортируйте с использованием компаратора в 3-м столбце, а затем в 1-м столбце.
Что я хотел бы знать, так это как их отсортировать, и есть ли более простой способ делать это. в идеале печать должна быть разнесена с чем-то вроде
System.out.printf("%-20s%-10s%-4s%10s%n", Result.get(0), Result.get(1), Result.get(2), Result.get(3));
, что я попытался, но не мог отобразить без необходимости "System.out.println (CSVtoArrayList (Line));" линия. мой текущий код:
public static void main(String[] args) {
BufferedReader Buffer = null;
try {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter file name: ");
String input1 = scanner.nextLine();
String Line;
Buffer = new BufferedReader(new FileReader(input1));
while ((Line = Buffer.readLine()) != null) {
System.out.println(CSVtoArrayList(Line));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (Buffer != null) Buffer.close();
} catch (IOException Exception) {
Exception.printStackTrace();
}
}
}
public static ArrayList<String> CSVtoArrayList(String CSV) {
ArrayList<String> Result = new ArrayList<String>();
if (CSV != null) {
String[] splitData = CSV.split("\\s*,\\s*");
for (int i = 0; i < splitData.length; i++) {
if (!(splitData[i] == null) || !(splitData[i].length() == 0)) {
Result.add(splitData[i].trim());
}
}
}
return Result;
}
в настоящее время он печатает что-то вроде:
Enter file name:
comma.txt
[frist movei, Bob, 1999, 24.98]
[first mobie, Steve, 1999, -345.67]
[first movie, Pam, 1999, 0.00]
[other moive, Sam, 1562, -42.16]
[something, Sue, 8951, 224.62]