Comments (2)
Muito obrigado @cami-la !
Ajudou bastante!
from collections-java-api-2023.
Ótima pergunta, @BrunoSenigalha.
Bora lá:
A interface Comparable
serve para definir a ordem natural do objeto. Seguem exemplos de ordenação de objetos com as seguintes classes:
- Classe
String
(Já implementa oComparable
e ordena naturalmente pela ordem alfabética)
List<String> names = Arrays.asList("Camila", "Maria", "João", "Anna");
Collections.sort(names);
System.out.println(names);
//resultado: [Anna, Camila, João, Maria]
- Classe
Integer
(Já implementa oComparable
e ordena naturalmente pela ordem numérica)
List<Integer> numbers = Arrays.asList(8, 50, 3, 5);
Collections.sort(numbers);
System.out.println(numbers);
//resultado: [3, 5, 8, 50]
- classe
Pessoa
- Você implementou o
Comparable
e definiu através do metodocompareTo
que a ordem natural dos objetos do tipoPessoa
será por idade. - Como o atributo idade é um
Integer
, você terá definido que a ordenação desses objetos será pela ordem numérica das idades. - Sendo assim, a classe
Integer
tem o método estático chamado compareInteger.compare()
que vai fazer o papel de comparar cada elemento de dentro daCollection
e saber qual é o menor, o maior e se são iguais. Assim, consegue ordenar uma sequência de números.
@Override
public int compareTo(Pessoa pessoa) {
return Integer.compare(idade, pessoa.getIdade()); //return Integer.compare(primeiro elemento a ser comparado, segundo elemento a ser comparado)
}
- Vamos supor que a idade das pessoas dentro da lista sejam 8, 50, 3, 5.
- Aí quando 8 é comparado com 50, o método
compareTo
deInteger
retorna um valor negativo, indicando que 8 é menor que 50. Isso faz com que esses dois números sejam trocados de posição na lista, colocando o 8 antes do 50. - O processo de comparação e troca continua para os outros elementos na lista até que todos estejam na ordem correta.
- Beleza, agora que foi definido a ordem natural dos objetos do tipo
Pessoa
, agora você vai utilizar o método estáticoCollections.sort(pessoasPorIdade)
; que está recebendo uma lista que contém elementos do tipoPessoa
. - Como o tipo
Pessoa
já tem a ordem natural por idade, agora é só "correr para o abraço" e sua lista está ordenada. (:
public List<Pessoa> ordenarPorIdade() {
List<Pessoa> pessoasPorIdade = new ArrayList<>(pessoaList);
Collections.sort(pessoasPorIdade);
return pessoasPorIdade;
}
from collections-java-api-2023.
Related Issues (20)
- Erro no README
- Java - Alteração em exercícios sobre Collections
- duvida na colleção
- Erro: Collections cannot be resolved HOT 3
- ERRO: Compartilhar projeto do Intellij pro GitHub HOT 1
- Erro: collections HOT 1
- Erro para obter o produto mais caro no método map HOT 1
- Map - Livraria Online HOT 1
- Adicionado no toString valorTotalDoItem para exibir o total o item
- Erro Github HOT 1
- ERRO na criação do projeto HOT 3
- Erro Projeto HOT 1
- Erro ao remover um livro pela sua chave. HOT 1
- Duvidas
- Implementação da Classe SomaNumeros
- collections-java-api-2023
- .
- A imagem Hierarchy of Collection Framework in Java parece inverter as linhas de extensão e implementação
- Erro no primeiro exercicio de Operacoes Basicas do Map
- Problemas com o ComparartorPorPreco(), Quandos instanciado um treeset HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from collections-java-api-2023.