我想排序超大的字符串數組的電子郵件。當我沒有事先填充超大數組時,我得到一個nullPointerException。當我用空字符串填充數組時,我的代碼按字母順序對電子郵件列表進行排序,但將排序後的電子郵件列表放在空字符串後面。如何對電子郵件列表進行排序,以便首先在數組中按字母順序列出電子郵件,然後列出空白字符串?在java中排序超大的字符串數組
例如:如果我輸入了example1 @ domain,example2 @ domain,star和apple,下面的引用就是我的輸出。我希望所有的空字符串都在輸入的數據後面,而不是在它之前。
[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,...,...,...,...,...,...,..., ,,,蘋果,例1 @域名,示例2 @域,星]
代碼:
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;
}
編輯:我的代碼我自己的排序邏輯,在這個項目中 「效率」。我也必須使用一個超大的陣列。
做你的事,並在結尾處加上一個'System.arraycopy()'該副本將數組的結尾添加到新數組的開頭,並用空字符串填充其餘部分。繁榮! – alfasin
你必須寫你自己的排序邏輯?你允許使用像Arrays.sort()這樣的庫函數嗎? – Nayuki
您是否需要手動對數組排序?通常情況下,Arrays.sort()完成了一項非常神奇的工作。 –