Olá pessoal, hoje iremos ver mais um exemplo de uma das implementações de conjuntos (Set) que é a TreeSet.
TreeSet utiliza Red-Black Tree que é uma implementação bastante otimizada de árvores, pois garante a inserção, busca e exclusão em um tempo O(log n). Para mais informações sobre Red-black tree, clique aqui.
É bom lembrar que, em conjuntos, não é permitida a inserção de elementos duplicados.
A TreeSet organiza os dados de acordo com algum critério. Você pode definir qual é esse critério, por isso iremos implementar a interface Comparable.
Objetivo do programa: ordenar os produtos através do id em ordem decrescente.
Primeiramente temos uma classe chamada Produtos, segue o código da classe:

Linha 9: construtor da classe.
Linha 14: implementação do método toString, pois na hora de percorrer os elementos da minha TreeSet, quero mostrar o id de cada produto.
Linha 19: implementação do método compareTo da interface Comparable, nele eu indico o critério da ordenação. Se os id's forem iguais então retorna 0. Se o id deste produto for maior que o id do produto passado por parâmetro, então retorno -1, isso indica que este produto deve vir antes (objetivo é ordenar de forma decrescente). Senão, retorno 1 indicando que este produto deve vir depois.
Agora iremos ver a classe para testar utilizando TreeSet e os métodos que acabamos de implementar:

Linhas 10 à 13: criação de novos produtos com seus respectivos id's.
Linha 14: criação da minha treeSet que é do tipo Produto.
Linha 15: declaração do iterador (iterator). É bom lembrar que conjuntos não possuem indexação, ou seja, temos que percorrer através de iteradores.
Linhas 17 à 20: adiciono os produtos à minha treeSet.
Linha 21: obtenho o iterador da treeSet.
Linha 23: percorro a treeSet mostrando os elementos. Caso eu não tivesse implementado o método toString() na classe Produto, então a saída do programa ficaria estranha, tire o método toString() da classe Produto e veja o que acontece com a saída.
Então é isso pessoal, quaisquer dúvidas deixem nos comentários. Até a próxima!
Nenhum comentário:
Postar um comentário