Dominando Java NavigableMap: Recursos, Métodos e Implementação TreeMap
Interface NavigableMap do Java
Este tutorial explica a interface NavigableMap do Java, seus métodos principais e como usá-la com TreeMap.
A interface NavigableMap do framework de coleções do Java fornece capacidades de navegação através de entradas de mapa. É um SortedMap especializado, estendendo sua funcionalidade com métodos que permitem travessia bidirecional eficiente.
Classe que Implementa NavigableMap
Como NavigableMap é uma interface, você não pode instanciá-la diretamente. A implementação primária é a classe TreeMap, que oferece uma estrutura de árvore de busca binária auto-balanceada que mantém chaves em ordem classificada.
Como Usar NavigableMap
Primeiro, importe a interface:
import java.util.NavigableMap;
import java.util.TreeMap;
Então crie uma instância:
// Implementação NavigableMap pela classe TreeMap
NavigableMap<Chave, Valor> numeros = new TreeMap<>();
No código acima, numeros é um TreeMap que armazena pares chave-valor. Chave é o identificador único, e Valor são os dados associados.
Métodos Principais do NavigableMap
Todas as operações de SortedMap estão disponíveis, mas várias são sobrescritas para fornecer controle mais apertado. Métodos principais incluem:
headMap(chave, booleanoInclusivo)
Retorna uma visão da porção do mapa cujas chaves são estritamente menores que chave quando booleanoInclusivo é false (padrão). Se booleanoInclusivo for true, o mapa retornado inclui a entrada para chave.
tailMap(chave, booleanoInclusivo)
Retorna uma visão da porção do mapa cujas chaves são maiores ou iguais a chave quando booleanoInclusivo é true (padrão). Passar false exclui a entrada chave.
subMap(deChave, deInclusivo, ateChave, ateInclusivo)
Fornece uma visão entre deChave e ateChave. Os padrões são deInclusivo = true e ateInclusivo = false. Ajustar essas flags controla se as chaves de fronteira fazem parte do mapa resultante.
Métodos Adicionais de Navegação
- descendingMap() – inverte a ordem das entradas.
- descendingKeySet() – visão de chaves invertida.
- ceilingEntry(chave) – menor entrada com chave >= chave dada.
- ceilingKey(chave) – menor chave >= chave dada.
- floorEntry(chave) – maior entrada com chave <= chave dada.
- floorKey(chave) – maior chave <= chave dada.
- higherEntry(chave) – menor entrada com chave > chave dada.
- higherKey(chave) – menor chave > chave dada.
- lowerEntry(chave) – maior entrada com chave < chave dada.
- lowerKey(chave) – maior chave < chave dada.
- firstEntry() – entrada com a menor chave.
- lastEntry() – entrada com a maior chave.
- pollFirstEntry() – recupera e remove a primeira entrada.
- pollLastEntry() – recupera e remove a última entrada.
Para a especificação oficial, veja a documentação Java NavigableMap.
Exemplo de Implementação TreeMap
import java.util.NavigableMap;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// Criando NavigableMap usando TreeMap
NavigableMap<String, Integer> numeros = new TreeMap<>();
// Inserir elementos no mapa
numeros.put("Dois", 2);
numeros.put("Um", 1);
numeros.put("Três", 3);
System.out.println("NavigableMap: " + numeros);
// Acessar a primeira entrada do mapa
System.out.println("Primeira Entrada: " + numeros.firstEntry());
// Acessar a última entrada do mapa
System.out.println("Última Entrada: " + numeros.lastEntry());
// Remover a primeira entrada do mapa
System.out.println("Primeira Entrada Removida: " + numeros.pollFirstEntry());
// Remover a última entrada do mapa
System.out.println("Última Entrada Removida: " + numeros.pollLastEntry());
}
}
Saída
NavigableMap: {Um=1, Três=3, Dois=2} Primeira Entrada: Um=1 Última Entrada: Dois=2 Primeira Entrada Removida: Um=1 Última Entrada Removida: Dois=2
Saiba mais sobre TreeMap na documentação Java TreeMap.
Com um sólido entendimento da interface NavigableMap e sua implementação TreeMap, você pode construir estruturas de dados eficientes e ordenadas para suas aplicações Java.
Java
- Dominando Interfaces em C#: Definição, Implementação e Casos Práticos
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Dominando a Interface NavigableSet do Java: Navegação, Ordenação e Exemplos Práticos
- Dominando Expressões Lambda em Java: Do Básico à Stream API
- Interface vs Classe Abstrata em Java: Como Escolher a Abstração Certa
- Entendendo Interfaces em Java: Definições, Usos e Boas Práticas
- Java 9 Métodos Privados em Interfaces: Aumentando Encapsulamento e Reuso de Código
- Dominando Logging em Java: Práticas Essenciais para Código Confiável