Я пытаюсь сортировать массив строк большого размера. Когда я не заполняю негабаритный массив чем-нибудь заранее, я получаю исключение nullPointerException. Когда я заполняю массив пустыми строками, мой код сортирует список писем в алфавитном порядке, но помещает отсортированный список писем за пустыми строками. Как сортировать список писем, чтобы он сначала перечислял электронные письма в алфавитном порядке в массиве, а затем перечислял пустые строки?Сортировка большого массива строк в java
Пример: Если я ввел example1 @ domain, example2 @ domain, star и apple, следующей цитатой будет мой вывод. Я хочу, чтобы все пустые строки находились за введенными данными, а не раньше.
[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,, яблоко, example1 @ домен, example2 @ домен, звезда]
Код:
String[] data = new String[ARRAY_SIZE];
public static String[] addEmail(String[] data, String email, int index) {
int size = data.length;
data[index] = email;
int i,j;
String temp;
System.out.println(Arrays.toString(data));
for (j = 1; j < data.length; j++) {
temp = data[j];
i = j - 1;
while (i >= 0) {
if (temp.compareTo(data[i]) > 0) {
break;
}
data[i + 1] = data[i];
i--;
}
data[i + 1] = temp;
System.out.println(Arrays.toString(data));
}
System.out.println(Arrays.toString(data));
return data;
}
Edit: я должен закодировать свою собственную логику сортировки для "эффективности" в этом проекте. Я также должен использовать негабаритный массив.
Сделайте свою вещь и добавить в конце текста 'System.arraycopy()', что копии конец массива в начало нового массива и заполнение остальных пустыми строками. Boom! – alfasin
Должен ли вы написать свою собственную логику сортировки? Разрешено ли вам использовать библиотечные функции, такие как Arrays.sort()? – Nayuki
Нужно ли сортировать массив вручную? Обычно Arrays.sort() выполняет довольно богатую работу. –