treeset java tutorial with programming examples
Este tutorial explica tudo sobre a classe TreeSet, implementação, iteração, TreeSet Vs HashSet, exemplos de TreeSet Java, etc .:
TreeSet em Java implementa a interface Set (mais especificamente SortedSet). O TreeSet usa um TreeMap internamente para armazenar dados. Por padrão, os objetos ou elementos do TreeSet são armazenados de acordo com a ordem natural em ordem crescente.
A classe TreeSet que implementa TreeSet em Java implementa a interface ‘NavigableSet’ e também herda a classe AbstractSet.
=> Verifique aqui para ver A-Z dos tutoriais de treinamento de Java aqui.
O que você aprenderá:
TreeSet em Java
Observe que os elementos TreeSet também podem ser explicitamente ordenados fornecendo o Comparador personalizado no momento da criação de um objeto TreeSet usando o protótipo de construtor específico.
A seguir estão algumas das características importantes do TreeSet:
- A classe TreeSet implementa a interface SortedSet. Não permite elementos duplicados.
- A classe TreeSet não está sincronizada.
- TreeSet não preserva a ordem de inserção, mas os elementos em TreeSet são classificados de acordo com a ordem natural.
- TreeSet pode ser ordenado usando um comparador personalizado ao criar um objeto TreeSet.
- TreeSet é normalmente usado para armazenar grandes quantidades de informações que são classificadas naturalmente. Isso ajuda a um acesso fácil e rápido.
Declaração de classe TreeSet
Java fornece uma classe chamada “TreeSet” que contém a funcionalidade da estrutura de dados TreeSet. A classe TreeSet faz parte do pacote java.util.
Para incluir a classe TreeSet no programa Java, devemos usar a instrução import conforme fornecido a seguir:
import java.util.TreeSet;ou
import java.util.*;Uma declaração geral da classe TreeSet é:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, SerializableConforme visto na declaração da classe, a classe TreeSet estende AbstractSet e implementa as interfaces NavigableSet, Cloneable e Serializable.
Uma hierarquia de classes para a classe TreeSet é fornecida abaixo:

Implementação Interna
Sabemos que TreeSet implementa a interface NavigableSet e estende a classe SortedSet.
Internamente, o construtor TreeSet é definido da seguinte maneira:
public TreeSet() { this(new TreeMap()); }Conforme visto na definição do construtor acima de TreeSet, um objeto TreeMap é chamado. Portanto, internamente, é um objeto TreeMap que é implementado para um TreeSet. Portanto, ao adicionar um elemento a TreeSet, uma chave é adicionada a TreeMap na qual as chaves são classificadas por padrão.
Conforme Documentação Oracle em TreeSet ,
“Um TreeSet é uma implementação de NavigableSet baseada em um TreeMap.”
Exemplo de Java TreeSet
O programa Java a seguir mostra um exemplo simples que demonstra TreeSet. Neste programa, definimos um simples Color TreeSet. Adicionamos elementos a ele e, em seguida, exibimos. Observe que os elementos são exibidos de acordo com a ordem natural.
import java.util.*; class Main{ public static void main(String args()){ //Create and add elements to TreeSet TreeSet color_TreeSet=new TreeSet(); color_TreeSet.add('Red'); color_TreeSet.add('Green'); color_TreeSet.add('Blue'); color_TreeSet.add('Yellow'); //Traverse the TreeSet and print elements one by one System.out.println('TreeSet Contents:'); Iterator iter=color_TreeSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } } Resultado:
Conteúdo do TreeSet:
Azul Verde Vermelho Amarelo

Iterar através do TreeSet
Para acessar os elementos individuais de TreeSet, precisamos iterar por meio de TreeSet ou em outras palavras, atravessar por TreeSet.
Fazemos isso declarando um Iterator para o TreeSet e, em seguida, usamos esse Iterator para acessar cada elemento. Para isso, usamos o método next () de um iterador que retorna o próximo elemento no TreeSet.
O programa Java a seguir demonstra o uso do Iterator para iterar por meio de TreeSet.
import java.util.TreeSet; import java.util.Iterator; class Main { public static void main(String() args) { //create and initialize TreeSet TreeSet num_Treeset = new TreeSet(); num_Treeset.add(20); num_Treeset.add(5); num_Treeset.add(15); num_Treeset.add(25); num_Treeset.add(10); System.out.println('TreeSet: ' + num_Treeset); // Call iterator() method to define Iterator for TreeSet Iterator iter_set = num_Treeset.iterator(); System.out.print('TreeSet using Iterator: '); // Access TreeSet elements using Iterator while(iter_set.hasNext()) { System.out.print(iter_set.next()); System.out.print(', '); } } }Resultado:
TreeSet: (5, 10, 15, 20, 25)
TreeSet usando Iterator: 5, 10, 15, 20, 25,

amostras de currículo de teste de software 2 anos de experiência
TreeSet Comparator em Java
Por padrão, o TreeSet é naturalmente ordenado. Também podemos classificar TreeSet em uma ordem personalizada, definindo uma nova classe de comparação. Nesta classe de comparador, precisamos substituir o método ‘compare’ para classificar os elementos do TreeSet. Este objeto comparador é então passado para o construtor TreeSet.
O programa Java a seguir mostra o uso de um Comparador para classificar o TreeSet.
import java.util.TreeSet; import java.util.Comparator; class Main { public static void main(String() args) { // Create a TreeSet with user-defined comparator TreeSet cities = new TreeSet(new cities_Comparator()); //add elements to the comparator cities.add('Pune'); cities.add('Hyderabad'); cities.add('Indore'); cities.add('Bangaluru'); //print the contents of TreeSet System.out.println('TreeSet: ' + cities); } // Create a comparator class public static class cities_Comparator implements Comparator { //override compare method to compare two elements of the TreeSet @Override public int compare(String cities_one, String cities_two) { int value = cities_one.compareTo(cities_two); // sort elements in reverse order if (value > 0) { return -1; } else if (value <0) { return 1; } else { return 0; } } } } Resultado:
TreeSet: (Pune, Indore, Hyderabad, Bangaluru)

O programa acima implementa uma classe Comparator para classificar o TreeSet fornecido alfabeticamente na ordem inversa.
Leitura Recomendada = >> Interface de comparação Java
TreeSet API / métodos e construtores
Nesta seção, discutiremos a API da classe TreeSet. Aqui, discutiremos os construtores e métodos fornecidos pela classe TreeSet.
A classe TreeSet fornece construtores sobrecarregados para construir um objeto TreeSet.
Tabularizamos esses construtores da seguinte forma:
Construtores
| Protótipo de Construtor | Descrição | |
|---|---|---|
| contém | boolean contém (objeto o) | Verifica se TreeSet contém determinado elemento; verdadeiro se presente. |
| TreeSet () | Construtor padrão para criar um novo objeto TreeSet vazio. | |
| TreeSet (coleção c) | Cria um novo objeto TreeSet contendo os elementos da coleção c dada, classificados de acordo com a ordem natural. | |
| TreeSet (Comparador comparador) | Constrói um novo objeto TreeSet que está vazio e será classificado de acordo com o comparador especificado. | |
| TreeSet (SortedSet s) | Cria um novo objeto TreeSet que contém elementos de determinados SortSet s. |
Métodos
A seguir, vamos tabularizar os vários métodos fornecidos pela classe TreeSet.
| Método | Protótipo de Método | Descrição |
|---|---|---|
| adicionar | adição booleana (E e) | Adiciona determinado elemento ao TreeSet, se ainda não estiver lá. |
| addAll | boolean addAll (coleção c) | Adiciona todos os elementos da coleção c fornecida ao conjunto. |
| teto | Teto E (E e) | Retorna um elemento maior ou igual a e (menor elemento); ou null se nenhum elemento estiver presente. |
| Claro | void clear () | Exclui todos os elementos do TreeSet. |
| clone | Clone de objeto () | Retorna uma cópia superficial do objeto TreeSet. |
| comparador | Comparador comparador () | Retorna o comparador para o TreeSet ou nulo se a ordem natural for usada. |
| descendingIterator | Iterator descendingIterator () | Retorna o iterador descendente sobre os elementos no TreeSet. |
| descendingSet | NavigableSet descendingSet () | Retorna uma visão dos elementos no TreeSet na ordem reversa. |
| primeiro | E primeiro () | Retorna o primeiro ou o elemento mais baixo no TreeSet. |
| piso | Andar E (E e) | Retorna o elemento que é menor ou igual ao elemento e fornecido no TreeSet. Retorna nulo se não houver tal elemento. |
| headSet | SortedSet headSet (E toElement) | retorna um conjunto de elementos que são estritamente menores que o toElement fornecido |
| NavigableSet headSet (E toElement, boolean inclusive) | Retorna um conjunto de elementos que são iguais a (se inclusivo = verdadeiro) ou menores que toElement. | |
| superior | E superior (E e) | Retorna o menor elemento neste conjunto estritamente maior do que o elemento fornecido ou nulo se esse elemento não existir. |
| está vazia | boolean isEmpty () | Verifica se o TreeSet está vazio. Retorna verdadeiro se estiver vazio. |
| iterador | Iterator iterator () | Retorna um iterador (em ordem crescente) para o TreeSet. |
| último | E último () | Retorna o elemento mais alto ou último no TreeSet. |
| mais baixo | E inferior (E e) | Retorna o elemento (o maior elemento) que é estritamente menor do que o elemento e fornecido no TreeSet. |
| pollFirst | E pollFirst () | Remove e retorna o primeiro (mais baixo) elemento do conjunto; null se o conjunto estiver vazio. |
| pollLast | E pollLast () | Remove e retorna o último (maior) elemento do conjunto; nulo se definido como vazio. |
| retirar | boolean remove (objeto o) | Remove o elemento fornecido do conjunto. |
| Tamanho | tamanho interno () | Retorna o tamanho ou número de elementos presentes no TreeSet. |
| subconjunto | Subconjunto NavigableSet (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | Retorna uma visualização de elementos que variam de fromElement a toElement. |
| Subconjunto SortedSet (E fromElement, E toElement) | Retorna os elementos de uma visualização que variam de fromElement (inclusivo) a toElement (exclusivo). | |
| tailSet | SortedSet tailSet (E fromElement) | Retorna uma visão contendo elementos maiores ou iguais ao fromElement fornecido. |
| NavigableSet tailSet (E fromElement, boolean inclusive) | Retorna uma visão dos elementos são iguais a (se inclusivo for verdadeiro) ou maiores que fromElement. |
TreeSet em Java 8
Observe que, para TreeSet, não há grandes mudanças na versão Java 8. Todos os métodos e construtores funcionam no Java 8 e nas versões posteriores.
Implementação TreeSet em Java
O programa Java a seguir implementa a maioria dos métodos TreeSet discutidos acima.
import java.util.Iterator; import java.util.TreeSet; import java.util.ArrayList; public class Main { public static void main(String() args) { //create a TreeSet of numbers TreeSet numSet = new TreeSet(); //add () method numSet.add(30); numSet.add(10); //declare and initialize an ArrayList ArrayList myList = new ArrayList(); myList.add(15); myList.add(25); myList.add(35); //addAll () method : add ArrayList elements to TreeSet numSet.addAll(myList); //define an iterator on TreeSet Iterator iterator = numSet.iterator(); System.out.print('Tree set contents: '); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //ceiling () System.out.println('ceiling(25):' + numSet.ceiling(25)); //floor () System.out.println('floor(25):' + numSet.floor(25)); //contains () System.out.println('TreeSet contains(15):' + numSet.contains(15)); // isEmpty () if (numSet.isEmpty()) System.out.print('Tree Set is empty.'); else System.out.println('Tree Set size: ' + numSet.size()); // first () System.out.println('TreeSet First element: ' + numSet.first()); // last () System.out.println('TreeSet Last element: ' + numSet.last()); // remove () if (numSet.remove(30)) System.out.println('Element 30 removed from TreeSet'); else System.out.println('Element 30 doesn't exist!'); System.out.print('TreeSet after remove (): '); iterator = numSet.iterator(); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //size () System.out.println('TreeSet size after remove (): ' + numSet.size()); //Headset () System.out.println('Headset : ' + numSet.headSet(35)); // clear () numSet.clear(); System.out.println('Tree Set size after clear (): ' + numSet.size()); } }Resultado:
Conteúdo do conjunto de árvores: 10 15 25 30 35
teto (25): 25
andar (25): 25
TreeSet contém (15): verdadeiro
Tamanho do conjunto de árvores: 5
Primeiro elemento TreeSet: 10
Último elemento TreeSet: 35
Elemento 30 removido do TreeSet
TreeSet após remover (): 10 15 25 35
Tamanho do TreeSet após remover (): 4
Fone de ouvido: (10, 15, 25)
Árvore Defina o tamanho após limpar (): 0

No programa acima, definimos um objeto TreeSet e adicionamos elementos a ele usando o método ‘add’. Em seguida, definimos um ArrayList. Em seguida, adicionamos elementos de ArrayList a TreeSet usando o método ‘addAll’. Posteriormente, demonstramos vários métodos TreeSet como Iterator, teto, piso, primeiro, último, contém, tamanho, isEmpty, etc.
TreeSet Vs HashSet
Vamos verificar algumas das diferenças entre TreeSet e HashSet.
| TreeSet | HashSet |
|---|---|
| Os elementos são ordenados de acordo com a ordem natural. | Os elementos não são ordenados. |
| Demora O (log N) para operações como inserir, excluir e pesquisar, tornando-o mais lento do que TreeSet. | Leva um tempo constante para operações básicas como inserir, excluir e pesquisar, tornando-o mais rápido do que TreeSet. |
| Não permite objetos nulos. | Permite objeto nulo. |
| Usa o método compareTo () para comparar dois objetos. | Usa os métodos compare () e equals () para comparar dois objetos. |
| Implementado internamente usando Navigable TreeMap. | Implementado internamente usando HashMap. |
| Possui API de rica funcionalidade que pode realizar várias manipulações. | A funcionalidade API do HashSet é bastante limitada. |
perguntas frequentes
Q # 1) O que é um TreeSet?
Responda: TreeSet é uma implementação de SortedSet que não permite valores duplicados. Os elementos no TreeSet são, por padrão, classificados em ordem crescente.
Q # 2) Como você adiciona elementos ao TreeSet em Java?
Responda: A classe TreeSet fornece um método add que é usado para adicionar um elemento específico ao TreeSet. Ele também fornece o método ‘addAll’. Este método aceita qualquer outra coleção como um argumento e então adiciona todos os elementos desta coleção ao TreeSet.
Q # 3) O TreeSet é thread-safe?
Responda: Não. TreeSet não é seguro para threads. Portanto, devemos cuidar de como operamos o TreeSet em um ambiente multi-thread.
Q # 4) O TreeSet pode ter duplicatas?
Responda: Não. TreeSet não permite duplicatas.
Q # 5)TreeSet permite null em Java?
Responda: sim. Podemos ter elementos nulos em TreeSet.
Conclusão
Isso conclui nosso tutorial sobre TreeSet. TreeSet é uma implementação SortedSet que não permite duplicatas, mas permite valores nulos. Os elementos no TreeSet são, por padrão, classificados de acordo com a ordem natural em ordem crescente.
Vimos os fundamentos da classe TreeSet junto com sua declaração e vários construtores e métodos.
Em nossos tutoriais subsequentes, discutimos as classes de coleção Java restantes.
=> Veja a série de treinamento simples em Java aqui.
Leitura recomendada
- Árvore de pesquisa binária em Java - exemplos de implementação e código
- TreeMap em Java - Tutorial com exemplos de TreeMap em Java
- O que é Java Vector | Tutorial da classe Java Vector com exemplos
- Tutorial da classe Java Scanner com exemplos
- Tutorial da classe Java Array - classe java.util.Arrays com exemplos
- Tutorial JAVA para iniciantes: mais de 100 tutoriais práticos em vídeo Java
- Java String contains () Tutorial de método com exemplos
- Jagged Array In Java - Tutorial com exemplos