Skip to content

Instantly share code, notes, and snippets.

@ulisseshen
Last active March 1, 2023 19:06
Show Gist options
  • Save ulisseshen/c396473d306ec201038efef31c348a6c to your computer and use it in GitHub Desktop.
Save ulisseshen/c396473d306ec201038efef31c348a6c to your computer and use it in GitHub Desktop.
Ordenação com 2 campos e 3 campos
class Pessoa {
String nome;
int idade;
double dinheiro;
Pessoa(this.nome, this.idade, this.dinheiro);
@override
String toString(){
return "$nome,\t$idade,\t R\$ $dinheiro";
}
}
void main() {
List<Pessoa> pessoas = [
Pessoa('Maria', 34, 10.50),
Pessoa('João', 25, 40.44),
Pessoa('Pedro', 23,14.90),
Pessoa('João', 17, 13.55),
Pessoa('João', 17, 17.99),
Pessoa('Lucas', 15, 50.00),
Pessoa('Maria', 37, 34.33),
Pessoa('Maria', 18, 23.55),
Pessoa('Pedro', 20,12.13),
Pessoa('Lucas', 25, 22.13),
];
pessoas.forEach(print);
// Maria, 34, R$ 10.5
// João, 25, R$ 40.44
// Pedro, 23, R$ 14.9
// João, 17, R$ 13.55
// João, 17, R$ 17.99
// Lucas, 15, R$ 50
// Maria, 37, R$ 34.33
// Maria, 18, R$ 23.55
// Pedro, 20, R$ 12.13
// Lucas, 25, R$ 22.13
pessoas.sort((a, b) {
// Primeiro, comparar pelo campo nome
int comparacao = a.nome.compareTo(b.nome);
if (comparacao != 0) {
return comparacao;
}
// Se os nomes forem iguais, comparar pelo campo idade
return a.idade.compareTo(b.idade);
});
print("---- pós sort 2 campos ---");
pessoas.forEach(print);
// ---- pós sort 2 campos ---
// João, 17, R$ 13.55
// João, 17, R$ 17.99
// João, 25, R$ 40.44
// Lucas, 15, R$ 50
// Lucas, 25, R$ 22.13
// Maria, 18, R$ 23.55
// Maria, 34, R$ 10.5
// Maria, 37, R$ 34.33
// Pedro, 20, R$ 12.13
// Pedro, 23, R$ 14.9
pessoas.sort((a, b) {
// Primeiro, comparar pelo campo nome
int comparacao = a.nome.compareTo(b.nome);
if (comparacao != 0) {
return comparacao;
}
// Se os nomes forem iguais, comparar pelo campo idade
int comp2 = a.idade.compareTo(b.idade);
if(comp2 != 0){
return comp2;
}
// Se a idade forem iguais, comparar o dinheiro
return a.dinheiro.compareTo(b.dinheiro);
// e Assim vai quantos campos você precisar
});
print("---- pós sort 3 campos ---");
pessoas.forEach(print);
// ---- pós sort 3 campos ---
// João, 17, R$ 13.55
// João, 17, R$ 17.99
// João, 25, R$ 40.44
// Lucas, 15, R$ 50
// Lucas, 25, R$ 22.13
// Maria, 18, R$ 23.55
// Maria, 34, R$ 10.5
// Maria, 37, R$ 34.33
// Pedro, 20, R$ 12.13
// Pedro, 23, R$ 14.9
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment