Считайте файл CSV в List
из Object[]
(по одному Object[]
на строку в вашем файле CSV)
- Первым элементом массива является сама строка (строка)
- Вторым элементом массива является значение типа double (a Double)
Итак, у вас есть следующий список:
{
["tricolor;14.0", 14.0],
["career;9.0", 9.0],
["salty;1020.0", 1020.0],
["looks;208.0", 208.0],
["bought;110.0", 110.0]
}
Затем сортируйте его по значению двойного
И затем вы можете записать его обратно в файл CSV (записывая только первый элемент каждого массива)
List<Object[]> list = readFile("myFile.csv");
list.sort(Comparator.comparing(p -> (Double)p[1]));
// write to csv file, just printing it out here
list.forEach(p -> System.out.println(p[0]));
Способ чтения файла:
private static List<Object[]> readFile(String fileName) {
List<Object[]> list = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
String[] splitLine;
while ((line = br.readLine()) != null) {
splitLine = line.split(";");
// add an array, first element is the line itself, second element is the double value
list.add(new Object[] {line, Double.valueOf(splitLine[1])});
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
РЕДАКТИРОВАТЬ Если вы хотите изменить порядок:
Получив отсортированный список, вы можете изменить его, используя удобный метод reverse
в классе Collections
Collections.reverse(list);