Trabalhando com Collections Java Ordenação de elementos em uma coleção List
/*Dadas as seguintes informações sobre meus gatos, crie uma lista e ordene esta lista exibindo: (nome - idade - cor);
Gato 1 = nome: Jon, idade: 18, cor: preto Gato 2 = nome: Simba, idade: 6, cor: tigrado Gato 3 = nome: Jon, idade: 12, cor: amarelo */
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List;
public class PrimeirosPassosExemploOrdenaçãoList { public static void main(String[] args) {
List<Gato> meusGatos = new ArrayList<>(){{
add(new Gato("Jon", 12, "preto"));
add(new Gato("Simba", 6, "tigrado"));
add(new Gato("Jon", 18, "amarelo"));
}};
meusGatos.sort(Comparator.comparing(Gato::getNome));
System.out.println("--\tOrdem de Inserção\t---");
System.out.println(meusGatos);
System.out.println("--\tOrdem aleatória\t---");
Collections.shuffle(meusGatos);
System.out.println(meusGatos);
System.out.println("--\tOrdem Natural (Nome)\t---");
Collections.sort(meusGatos);
System.out.println(meusGatos);
System.out.println("--\tOrdem Idade\t---");
// Collections.sort(meusGatos, new ComparatorIdade()); meusGatos.sort(new ComparatorIdade()); System.out.println(meusGatos);
System.out.println("--\tOrdem cor\t---");
// Collections.sort(meusGatos, new ComparatorCor()); meusGatos.sort(new ComparatorCor()); System.out.println(meusGatos);
System.out.println("--\tOrdem Nome/Cor/Idade\t---");
// Collections.sort(meusGatos, new ComparatorNomeCorIdade()); meusGatos.sort(new ComparatorNomeCorIdade()); System.out.println(meusGatos); } }
class Gato implements Comparable{ private String nome; private Integer idade; private String cor;
public Gato(String nome, Integer idade, String cor) {
this.nome = nome;
this.idade = idade;
this.cor = cor;
}
public String getNome() {
return nome;
}
public Integer getIdade() {
return idade;
}
public String getCor() {
return cor;
}
@Override
public String toString() {
return "{" +
"nome='" + nome + '\'' +
", idade=" + idade +
", cor='" + cor + '\'' +
'}';
}
@Override
public int compareTo(Gato gato) {
return this.getNome().compareToIgnoreCase(gato.getNome());
}
}
class ComparatorIdade implements Comparator { @Override public int compare(Gato g1, Gato g2) { return Integer.compare(g1.getIdade(), g2.getIdade()); } }
class ComparatorCor implements Comparator {
@Override
public int compare(Gato g1, Gato g2) {
return g1.getCor().compareToIgnoreCase(g2.getCor());
}
}
class ComparatorNomeCorIdade implements Comparator {
@Override
public int compare(Gato g1, Gato g2) {
int nome = g1.getNome().compareToIgnoreCase(g2.getNome());
if (nome != 0) return nome;
int cor = g1.getCor().compareToIgnoreCase(g2.getCor());
if(cor !=0) return cor;
return Integer.compare(g1.getIdade(), g2.getIdade());
}
}
C:\Users\Irene.jdks\openjdk-18.0.1.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.1\lib\idea_rt.jar=52673:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Irene\Documents\Primeiros Passos Elementos List\PrimeirosPassosElementosList\out\production\PrimeirosPassosElementosList" primeirospassosordenaçãolist.com.br.PrimeirosPassosExemploOrdenaçãoList
-- Ordem de Inser��o --- [{nome='Jon', idade=12, cor='preto'}, {nome='Jon', idade=18, cor='amarelo'}, {nome='Simba', idade=6, cor='tigrado'}] -- Ordem aleat�ria --- [{nome='Jon', idade=12, cor='preto'}, {nome='Jon', idade=18, cor='amarelo'}, {nome='Simba', idade=6, cor='tigrado'}] -- Ordem Natural (Nome) --- [{nome='Jon', idade=12, cor='preto'}, {nome='Jon', idade=18, cor='amarelo'}, {nome='Simba', idade=6, cor='tigrado'}] -- Ordem Idade --- [{nome='Simba', idade=6, cor='tigrado'}, {nome='Jon', idade=12, cor='preto'}, {nome='Jon', idade=18, cor='amarelo'}] -- Ordem cor --- [{nome='Jon', idade=18, cor='amarelo'}, {nome='Jon', idade=12, cor='preto'}, {nome='Simba', idade=6, cor='tigrado'}] -- Ordem Nome/Cor/Idade --- [{nome='Jon', idade=18, cor='amarelo'}, {nome='Jon', idade=12, cor='preto'}, {nome='Simba', idade=6, cor='tigrado'}]
Process finished with exit code 0