treemap java tutorial with java treemap examples
Este tutorial Java TreeMap discute a classe TreeMap, iteração, exemplos de TreeMap, implementação, Java Hashmap vs Treemap, métodos de API TreeMap etc .:
Uma estrutura de dados TreeMap é uma coleção que armazena pares de valores-chave em uma ordem naturalmente classificada. Um TreeMap é uma parte do Java Collections Framework e é uma implementação de mapa.
=> Verifique TODOS os tutoriais Java aqui.
O que você aprenderá:
Java TreeMap
Algumas das principais características do TreeMap em Java são as seguintes:
- A classe TreeMap que implementa treemap em Java faz parte do pacote java.util. Ele implementa a interface do Mapa.
- A classe TreeMap estende a classe AbstractMap e também implementa a interface NavigableMap e SortedMap (indiretamente).
- TreeMap não está sincronizado.
- Por padrão, os elementos TreeMap estão em ordem crescente por padrão.
- TreeMap não permite elementos duplicados.
- TreeMap permite valores nulos, mas não chaves nulas.
O diagrama abaixo mostra a hierarquia de classes para a classe TreeMap.
Como já mencionado, a classe TreeMap implementa uma interface NavigableMap que, por sua vez, estende a classe SortedMap. SortedMap herda ainda mais a interface do mapa.
Declaração da classe TreeMap
A declaração geral da classe TreeMap é fornecida abaixo:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
onde K => tipo de chaves mantidas por TreeMap
V => tipo dos valores mapeados
Exemplo de TreeMap
O programa abaixo mostra um exemplo simples de uma estrutura de dados TreeMap.
import java.util.*; class Main{ public static void main(String args()){ //declare a TreeMap and initialize it TreeMap cities_map=new TreeMap (); cities_map.put(100,'Pune'); cities_map.put(102,'Jaipur'); cities_map.put(101,'Hyderabad'); cities_map.put(103,'Bangaluru'); //print the TreeMap contents using forEach System.out.println('Contents of TreeMap:'); System.out.print('{'); for(Map.Entry entries:cities_map.entrySet()){ System.out.print(entries.getKey()+' = '+entries.getValue() + ' '); } System.out.println('}'); } }
Resultado:
Conteúdo do TreeMap:
{100 = Pune 101 = Hyderabad 102 = Jaipur 103 = Bangaluru}
Neste programa, definimos um objeto TreeMap simples denominado cities_map e, em seguida, usando o método put, o inicializamos para pares de valor-chave.
Em seguida, usamos o método entrySet () da classe TreeMap e iteramos sobre esse conjunto usando um loop forEach para imprimir os pares chave-valor. Para imprimir pares de valores-chave, usamos os métodos getKey () e getValue (), respectivamente.
perguntas e respostas da entrevista oracle para experientes
Métodos e construtores da API TreeMap
Nesta seção, discutiremos os vários construtores e métodos fornecidos pela classe TreeMap.
Construtores
Protótipo de Construtor | Descrição | |
---|---|---|
descendingMap | NavigableMap descendingMap () | Retorna os pares de valores-chave fornecidos na ordem reversa. |
TreeMap () | Construtor padrão para criar um TreeMap vazio com ordenação natural. | |
TreeMap (comparador comparador) | Constrói um TreeMap vazio que é classificado com base no comparador especificado. | |
TreeMap (mapa m) | Constrói um TreeMap e o inicializa com os elementos do mapa especificado, m. A ordenação é natural. | |
TreeMap (SortedMap m) | Constrói um TreeMap e o inicializa com entradas SortedMap. A ordenação é igual a SortMap. |
Métodos
Método | Protótipo de Método | Descrição |
---|---|---|
roofEntry | Map.Entry roofEntry (tecla K) | Retorna o menor par de valores-chave, de forma que a chave seja maior ou igual à chave especificada; nulo se não houver chave |
roofKey | K roofKey (tecla K) | Retorna a chave que é menor e maior que a chave fornecida; retorna nulo se nenhuma chave. |
Claro | void clear () | Exclui todos os pares de valores-chave do mapa de árvore. |
clone | Clone de objeto () | Faz uma cópia superficial da instância TreeMap. |
comparador | Comparador comparador () | Retorna um comparador usado para organizar as chaves. nulo se a ordem for natural |
descendingKeySet | NavigableSet descendingKeySet () | Retorna a visualização NavigableSet das chaves TreeMap na ordem reversa. |
firstEntry | Map.Entry firstEntry () | Retorna o menor par de valores-chave. |
floorEntry | Map.Entry floorEntry (tecla K) | Retorna a maior chave que é menor ou igual a uma determinada chave; nulo se não houver tal chave |
para cada | void forEach (ação BiConsumer) | A ação fornecida é executada para cada entrada no TreeMap. |
headMap | SortedMap headMap (K toKey) | Usado para retornar um par de valores-chave de forma que a chave retornada seja estritamente menor que toKey |
headMap | NavigableMap headMap (K toKey, boolean inclusive) | Retorna pares de valores-chave dessas chaves que são menores que toKey ou iguais a se inclusivos. |
higherEntry | Map.Entry higherEntry (tecla K) | Retorna a menor chave ou nulo. A chave retornada é estritamente maior do que a chave fornecida. |
higherKey | K higherKey (K key) | Retorna a chave se o mapeamento estiver presente para a chave fornecida no mapa de árvore. |
conjunto de chaves | Definir keySet () | Retorna a coleção definida das chaves no TreeMap. |
Última entrada | Map.Entry lastEntry () | Retorna o par de valores-chave de forma que a chave seja a maior chave. Retorna nulo se a chave não existe. |
lowerEntry | Map.Entry lowerEntry (tecla K) | Retorna o par de valores-chave de forma que a chave seja maior e estritamente menor que a chave fornecida. Retorna nulo se a chave não existe. |
lowerKey | K lowerKey (tecla K) | Retorna a maior chave ou nulo. A chave retornada é estritamente menor que a chave fornecida. |
navigableKeySet | NavigableSet navigableKeySet () | Retorna o ‘NavigableSet’ de chaves no TreeMap. |
pollFirstEntry | Map.Entry pollFirstEntry () | Remove e retorna o menor par de valores-chave da chave. |
pollLastEntry | Map.Entry pollLastEntry () | Remove e retorna o maior par de valores-chave da chave. |
por | V put (chave K, valor V) | Adiciona a chave e o valor fornecidos ao TreeMap. |
Ponha tudo | void putAll (mapa do mapa) | Todos os pares de valores-chave do mapa fornecido são copiados para o TreeMap. |
substituir | V substituir (chave K, valor V) | Substitui ou altera o valor da chave fornecida pelo valor fornecido. |
substituir | boolean replace (chave K, V oldValue, V newValue) | Substitui oldValue da chave fornecida por newValue. |
substitua tudo | void replaceAll (função BiFunction) | Chama a função fornecida e substitui todas as entradas com o resultado da função. |
submapa | Submapa NavigableMap (K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Retorna os pares de valores-chave de chaves de ‘fromKey’ para ‘toKey’. |
SortedMap | SortedMap submap (K fromKey, K toKey) | Retorna pares de valores-chave para o intervalo deKey (inclusivo) a toKey (exclusivo). |
tailMap | SortedMap tailMap (K fromKey) | Retorna pares de valores-chave de forma que as chaves sejam maiores ou iguais a fromKey. |
tailMap | NavigableMap tailMap (K fromKey, boolean inclusive) | Retorna pares de valores-chave para as chaves iguais a fromKey (inclusivo = verdadeiro) ou maior que fromKey. |
containsKey | boolean containsKey (chave do objeto) | Verifica se há um mapeamento para a chave fornecida no mapa de árvore. Retorna verdadeiro se sim. |
containsValue | boolean containsValue (valor do objeto) | Verifica se há uma chave mapeada com o valor fornecido. Retorna sim se verdadeiro. |
firstKey | K firstKey () | Retorna a chave mais baixa ou a primeira chave no Mapa Ordenado |
obter | V get (chave do objeto) | Recupera o valor mapeado para a chave fornecida |
lastKey | K lastKey () | Retorna a última chave ou a chave mais alta no mapa classificado. |
retirar | V remover (chave do objeto) | Exclui o par de valores-chave para a chave fornecida no TreeMap |
entrySet | Definir | Retorna o conjunto para o TreeMap fornecido. |
Tamanho | tamanho interno () | Retorna o tamanho ou o número total de pares de valores-chave no TreeMap. |
valores | Valores de coleção () | Retorna a coleção de valores para o TreeMap. |
Iterando através do TreeMap
TreeMap consiste em pares de valores-chave. A classe TreeMap fornece um método ‘entrySet’ que retorna pares chave-valor no mapa. Podemos iterar por meio dessas entradas usando o loop forEach e exibir chaves e valores usando os métodos getKey () e getValue (), respectivamente.
Isso é mostrado no programa Java abaixo:
import java.util.Map; import java.util.TreeMap; class Main { public static void main(String() arg){ //declare and initialize TreeMap Map colorsTree = new TreeMap(); colorsTree.put('R', 'Red'); colorsTree.put('G', 'Green'); colorsTree.put('B', 'Blue'); colorsTree.put('M', 'Magenta'); System.out.println('The contents of TreeMap:'); // retrieve set of map entries using entrySet method for (Map.Entry Map_entry : colorsTree.entrySet()) //print key-value pairs using getKey() and getValue() System.out.println( '(' + Map_entry.getKey() + '=>' + Map_entry.getValue() + ')'); } }
Resultado:
O conteúdo de TreeMap:
(B => Azul)
(G => Verde)
(M => Magenta)
(R => Vermelho)
Implementação TreeMap em Java
O programa Java a seguir demonstra o método principal da classe TreeMap discutida acima.
import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class Main { public static void main(String() args) { //declare a TreeMap Object and initialize it with values TreeMap map = new TreeMap<>(); for(int i=1;i<=10;i++) { map.put(i, (i*i)+''); } System.out.println('Original Map:' + map); //lowerEntry, higherEntry Entry entry = map.lowerEntry(4); System.out.println('Closest Lower Entry than 4:'+entry); entry = map.higherEntry(4); System.out.println('Closest Higher Entry than 4:'+entry); System.out.println('Closest Lower key than 4 :'+map.lowerKey(4)); entry = map.floorEntry(6); System.out.println('Closest floor entry than 6: '+entry); entry = map.ceilingEntry(6); System.out.println('Closest ceiling Entry than 6 :'+entry); entry = map.firstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.lastEntry(); System.out.println('TreeMap Last Entry:'+entry); Map reversedMap = map.descendingMap(); System.out.println('Reversed TreeMap: '+reversedMap); //pollFirstEntry, pollLastEntry entry = map.pollFirstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.pollLastEntry(); System.out.println('TreeMap Last Entry:'+entry); //subMap Map subMap = map.subMap(2, true, 6, true); System.out.println('Submap from 2 to 6: '+subMap); //headMap subMap = map.headMap(5, true); System.out.println('HeadMap: '+subMap); //tailMap subMap = map.tailMap(5, true); System.out.println('TailMap: '+subMap); } }
Resultado:
Mapa original: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Entrada inferior mais próxima que 4: 3 = 9
Entrada mais alta mais próxima que 4: 5 = 25
Chave inferior mais próxima do que 4: 3
Entrada do andar mais próxima do que 6: 6 = 36
Entrada de teto mais próxima do que 6: 6 = 36
TreeMap Primeira entrada: 1 = 1
Última entrada do TreeMap: 10 = 100
Mapa de árvore invertido: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
TreeMap Primeira entrada: 1 = 1
Última entrada do TreeMap: 10 = 100
Submapa de 2 a 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
HeadMap: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
TailMap: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Classificar TreeMap por valor
Por padrão, TreeMap é classificado com base nas chaves de acordo com a ordem natural. Mas se quisermos classificar o TreeMap de acordo com os valores, então temos que fazer uso do comparador para definir a classificação.
O programa Java abaixo classifica o TreeMap por valor.
import java.util.*; class Main { //Method for sorting the TreeMap based on values public static > Map sortTreeMap(final Map map) { //define a comaprator to sort TreeMap on values Comparator valueComparator = new Comparator() { public int compare(K k1, K k2) { int compare = map.get(k1).compareTo(map.get(k2)); if (compare == 0) return 1; else return compare; } }; //use the comparator to sort the TreeMap and return sortedTreeMap Map sortedTreeMap = new TreeMap(valueComparator); sortedTreeMap.putAll(map); return sortedTreeMap; } public static void main(String args()) { //define and initialize the TreeMap TreeMap treemap = new TreeMap(); treemap.put('R', 'Red'); treemap.put('G', 'Green'); treemap.put('B', 'Blue'); treemap.put('C', 'Cyan'); treemap.put('M', 'Magenta'); // call method sortTreeMap to sort the TreeMap Map sortedTreeMap = sortTreeMap(treemap); // Retrieve set of the entries on the sorted map Set set = sortedTreeMap.entrySet(); System.out.println('The sorted TreeMap based on Values:'); // Now define iterator on this set Iterator i = set.iterator(); // Print TreeMap elements while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ': '); System.out.println(me.getValue()); } } }
Resultado:
O TreeMap classificado com base em valores:
B: Azul
C: ciano
G: Verde
M: Magenta
R: Vermelho
Java Hashmap vs Treemap
Vamos ver algumas das principais diferenças entre um HashMap e um TreeMap.
A tabela abaixo mostra essas diferenças.
HashMap | TreeMap |
---|---|
HashMap é muito mais rápido do que TreeMap. | TreeMap é mais lento |
Implementa a interface do Mapa. | Implementa a interface NavigableMap. |
Usa técnica de implementação de hashing | Use uma árvore vermelha e preta para implementação |
Não mantém nenhuma ordem de elementos de contenção | As chaves no mapa de árvore já estão ordenadas de acordo com a ordem natural |
Permite uma chave nula e muitos valores nulos | Permite apenas valores nulos, mas as chaves não podem ser nulas |
Executa operações básicas, coloca e recebe em tempo constante. | Use log (n) para realizar as operações put e get |
HashMap tem funcionalidade limitada. | A classe TreeMap fornece muitas funcionalidades adicionais que nos ajudam a manipular a estrutura de dados. |
Usa o método equals () para comparação. | Usa o método compareTo () para comparação. |
perguntas frequentes
Q # 1) O que é TreeMap em Java?
Responda: TreeMap em Java é uma coleção de pares de chave-valor que já estão classificados. Ele usa uma árvore vermelha e preta para fins de implementação. Java TreeMap implementa a interface NavigableMap separada da interface Map e também estende a classe AbstractMap.
Q # 2) Por que usamos TreeMap em Java?
Responda: O TreeMap é usado em Java para implementar as interfaces Map e NavigableMap e a classe AbstractMap. Como as chaves TreeMap são classificadas de acordo com a ordem natural, podemos usar essa estrutura de dados para armazenar a estrutura de diretórios, hierarquias de árvore, etc.
Q # 3) Qual é melhor - HashMap ou TreeMap?
melhor aplicativo para baixar vídeos do youtube
Responda: HashMap é melhor do que TreeMap. O HashMap sempre leva um tempo constante para realizar as operações básicas, enquanto o TreeMap leva um tempo log (n) para realizar essas operações. Quando objetos de dados maiores estão envolvidos, o HashMap tem um desempenho mais rápido quando comparado ao TreeMap.
Q # 4) O TreeMap está classificado?
Responda: Sim, as entradas principais no TreeMap são classificadas de acordo com a ordem natural. A classe TreeMap também nos permite usar um comparador personalizado para classificar o TreeMap com base em valores.
Q # 5) O TreeMap é seguro para threads?
Responda: Não, TreeMap não é uma coleção thread-safe.
Conclusão
Neste tutorial, discutimos TreeMap em Java em detalhes. TreeMap é uma coleção de pares de chave-valor que implementa a interface do mapa. Ele também implementa uma interface NavigableMap. Os elementos do TreeMap são únicos e nenhuma duplicata é permitida.
Vimos os construtores e métodos de TreeMap. Também implementamos o programa TreeMap e demonstramos os principais métodos da classe TreeMap. Em seguida, discutimos as diferenças entre HashMap e TreeMap.
=> Visite aqui para ver a série de treinamento Java para todos.
Leitura recomendada
- TreeSet em Java: Tutorial com exemplos de programação
- Árvore de pesquisa binária em Java - exemplos de implementação e código
- Tutorial JAVA para iniciantes: mais de 100 tutoriais práticos em vídeo Java
- Java String contains () Tutorial de método com exemplos
- O que é Java Vector | Tutorial da classe Java Vector com exemplos
- Jagged Array In Java - Tutorial com exemplos
- Tutorial da classe Java Scanner com exemplos
- Tutorial de Java String | Métodos Java String com exemplos