У меня есть метод, который читает txt-файл, и мне нужно его взять каждое слово в текстовом файле, а затем повторить их в отсортированном порядке, не удаляя дубликаты. Мне удалось заставить его работать, но хотелось бы, чтобы код был более эффективным. Может кто-нибудь дать мне hinter, что я могу сделать, чтобы сделать это быстрее? Что-то другое, чем ArrayList? Есть ли другой способ сортировки, кроме Collections.sort?Как сделать мой отсортированный список более эффективным?
public static void doIt(BufferedReader r, PrintWriter w) throws IOException {
ArrayList<String> p = new ArrayList<String>();
String line;
int n = 0;
while ((line = r.readLine()) != null) {
p.add(line);
n++;
}
Collections.sort(p);
Нужно ли отслеживать 'n'? – nhahtdh
Если у вас есть только этот фрагмент кода, то больше ничего не нужно оптимизировать, за исключением того, что вы даете начальный размер вашему 'ArrayList', чтобы избежать слишком большого числа операций по изменению размера массива (все же это была бы микро-оптимизация). Если вы хотите оптимизировать код своего приложения (это похоже), используйте профилировщик, чтобы найти реальное узкое место вместо того, чтобы гадать, где вы можете сделать некоторые оптимизации. –
Вы можете попробовать 'PriorityQueue' http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html, который представляет собой реализацию Java кучи. Не могу сказать, будет ли он более эффективным, так как он имеет такую же большую сложность O, как и сортировку. – cyon