Поскольку вы предоставляете очень мало информации о данных, давайте предположим, что строка CSV содержит следующие данные в следующем порядке:
- фамилия
- почтовый индекс
- состояние
- имя
Если я правильно понял (« сортирует переменную результата » и ссылается на возвращаемую переменную ITCO321_U4IP_sample_data
с именем result
), вы хотите отсортировать эти данные результата, чтобы получить их в другом порядок. Для этого вам не нужно сортировать список результатов. Посмотрите на следующий код:
public static List<String> reorder(List<String> input) {
List<String> reordered = new ArrayList<>(input.size());
reordered.add(input.get(3)); // first name
reordered.add(input.get(0)); // last name
reordered.add(input.get(1)); // zip code
reordered.add(input.get(2)); // state
return reordered;
}
Таким образом, вы устанавливаете (копируете) каждое поле строки CSV для чтения в новый List
в новом последовательном порядке.
Конечно, вы можете использовать List.sort(...)
для получения нового заказа. Но это приведет к переупорядочению List
на каждом перемещенном поле. Чем длиннее список и чем больше файлов переупорядочивается, тем менее эффективна сортировка по сравнению с простым копированием, показанным выше.
PS: Вы уже получили несколько общих подсказок в комментариях. Некоторые дополнительные советы:
Также рекомендуется использовать интерфейс в качестве типов возвращаемых данных. Применяя это к вашему методу, вы можете объявить это следующим образом:
public static List<String> ITCO321_U4IP_sample_data(String u4ip) { ... }
При использовании ресурсов, таких как BufferedReader
, рекомендуется использовать оператор try-with-resource . Но вы можете прочитать весь файл в одной строке кода, не беспокоясь об обработке ресурсов с помощью nio-API следующим образом:
Files.readAllLines(new File("\\ITCO321_U4IP_sample_data.csv").toPath());