У меня есть файл данных из 10000 строк со следующими строками: «lastName, firstName middleName social security». Я хочу отсортировать его с помощью сопоставимого интерфейса, где сравнение основано на имени (последний, первый средний); если последние, первые и средние имена совпадают, используйте социальную защиту в качестве вторичного поля сортировки для этой записи. Моя проблема в том, что я читаю каждое имя в отдельный массив, и поэтому я не могу выполнить вышеупомянутую задачу. Ниже приведен пример того, как я читаю файл и метод сортировки.Сортировка массива объектов с использованием естественного порядка
{ в то время как (fileScanner.hasNextLine())
{
//Each String in the line of the data file is read into an array
Scanner lineScanner = new Scanner (fileScanner.nextLine());
lastName [i] = lineScanner.next();
firstName [i] = lineScanner.next();
middleName [i] = lineScanner.next();
id [i] = lineScanner.next();
lastName[i] = lastName[i].substring(0, lastName[i].indexOf(','));
i++
}
Sorts.selectionSort(lastName, firstName, middleName, id);
}
// метод сортировки
public static void selectionSort (Object [] x, Object [] y, Object [] z, Object [] a)
{
// Make [0 ... i] sorted and <= x [i + 1] ...x [x.length -1]:
for (int i = 0; i < x.length -1; i++)
{
int pos = i;
for (int k = i + 1; k < x.length; k++)
if (((Comparable)x [k]).compareTo(x [pos]) < 0)
pos = k;
swap (x, i, pos);
System.out.println(x[i]);
}
for (int j = 0; j < y.length -1; j++)
{
int pos2 = j;
for (int k = j + 1; k < y.length; k++)
if (((Comparable)y [k]).compareTo(y [pos2]) < 0)
pos2 = k;
swap (y, j, pos2);
System.out.println(y[j]);
}
for (int m = 0; m < z.length -1; m++)
{
int pos3 = m;
for (int k = m + 1; k < y.length; k++)
if (((Comparable)z [k]).compareTo(z [pos3]) < 0)
pos3 = m;
swap (y, m, pos3);
//System.out.println(z[m]);
}
for (int l = 0; l < a.length -1; l++)
{
int pos4 = l;
for (int k = l + 1; k < y.length; k++)
if (((Comparable)a [k]).compareTo(a [pos4]) < 0)
pos4 = l;
swap (y, l, pos4);
System.out.println(a[l]);
}
}
Вы избили меня до этого :) –