Ola pessoal, me ajudem em uma duvida por favor!
Tenho que fazer um programa para a faculdade onde tenho que ordenar um array de Serie (uma classe criada) pelo campo de “paisOrigem” e as series que empatassem neste campo deveriam ser desempatadas pelo campo “nome”. Acontece que eu consegui fazer a primeira ordenação, mas não consigo pensar em uma logica para fazer o desempate, pois se eu passar mais uma ordenação, agora pelo campo “nome”, eu desorganizaria o primeiro processo de ordenação pelo campo “paisOrigem”, né?
Alguém pode me dar uma luz sobre o que devo fazer?
meu código esta assim até agora:
public static boolean isFim(String s) {
return (s.length() == 3 && s.charAt(0) == 'F' && s.charAt(1) == 'I' && s.charAt(2) == 'M');
}
public static void main(String[] args) {
/* Inicio - Leitura da entrada padrao */
String[] entrada = new String[1000];
int line = 0;
do {
entrada[line] = MyIO.readLine();
} while (isFim(entrada[line++]) == false);
line--;
/* Fim - Leitura da entrada padrao */
Serie[] s = new Serie[1000];// array de Serie declarado
int count = 0;
for (int i = 0; i < line; i++) {
s[count] = new Serie();
s[count].readClass(entrada[i]);
count++;
} // Todos os dados das series guardados dentro do array s
selecao(s, count);// ordenação das series por pais
for (int i = 0; i < count; i++) {
s[i].printClass();
}
}
public static Serie[] selecao(Serie[] array, int contador) {
for (int i = 0; i < (contador - 1); i++) {
int menor = i;
for (int j = (i + 1); j < contador; j++) {
if (array[menor].getCountry().compareTo(array[j].getCountry()) > 0) {
menor = j;
}
}
swap(array, menor, i);
}
return array;
}
// metodo para troca de poição das series chamado pelo metodo seleçãos
public static Serie[] swap(Serie[] array, int menor, int i) {
Serie temp = array[menor].clone();
array[menor] = array[i].clone();
array[i] = temp.clone();
return array;
}
public static Serie[] insercao(Serie[] array, int contador) {
for (int i = 1; i < contador; i++) {
Serie tmp = array[i];
int j = i - 1;
while ((j >= 0) && (array[j].getName().compareTo(tmp.getName()) > 0)) {
array[j + 1] = array[j];
j--;
}
array[j + 1] = tmp;
}
return array;
}
Esse método “insercao” seria aonde eu rodaria a segunda ordenação, mas, como disse ai em cima, não sei como fazer isso.