Last active
March 1, 2023 19:06
-
-
Save ulisseshen/c396473d306ec201038efef31c348a6c to your computer and use it in GitHub Desktop.
Ordenação com 2 campos e 3 campos
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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