Diretório de artigos
prefácio
Na estrutura de coleta de Java, Map
as interfaces são usadas para armazenar pares de valores-chave e fornecer uma estrutura de dados para pesquisa e operação com base em chaves. Map
A classe de implementação da interface fornece métodos avançados para operar pares de valores-chave, como adição, exclusão, atualização e pesquisa. Este artigo apresentará interfaces em Java Map
e suas classes de implementação comuns em detalhes, incluindo HashMap
, , TreeMap
e LinkedHashMap
, e fornecerá alguns exemplos de código.
1. Visão geral do mapa
Map
Uma interface é uma coleção de pares de valores-chave herdados de e e de outros métodos Collection
na interface . Ela também fornece métodos para encontrar valores com base em chaves, bem como métodos para adicionar, excluir e atualizar valores-chave pares. Em Java, as interfaces têm várias classes de implementação comuns, cada uma com desempenho e usos diferentes.size()
isEmpty()
Map
HashMap
: Baseado na implementação de tabela hash, possui operações rápidas de pesquisa e inserção e é adequado para cenários onde pares de valores-chave precisam ser encontrados rapidamente.TreeMap
: Com base na implementação da árvore vermelha e preta, as chaves podem ser classificadas e uma série de métodos relacionados à classificação são fornecidos, o que é adequado para cenários em que as chaves precisam ser classificadas.LinkedHashMap
: baseado na implementação de tabela hash e lista vinculada, mantém a ordem de inserção de pares de valores-chave e é adequado para cenários em que a ordem de inserção precisa ser mantida.
2. HashMap
HashMap
É Map
uma classe de implementação comum de interface, implementada com base em tabelas hash e pode fornecer operações rápidas de pesquisa e inserção. HashMap
Aqui estão alguns métodos comumente usados :
put(K key, V value)
: adicione o par de valores-chave especificado aHashMap
.remove(Object key)
: RemovaHashMap
dele .get(Object key)
: Retorna o valor correspondente à chave especificada.containsKey(Object key)
: verificaHashMap
se a chave especificada está incluída.containsValue(Object value)
: verificaHashMap
se o valor especificado está incluído.size()
: RetornaHashMap
o número de pares de valores-chave.
Aqui está um HashMap
exemplo de código usado:
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 90);
scores.put("Bob", 80);
scores.put("Charlie", 95);
System.out.println("Scores: " + scores);
scores.remove("Bob");
System.out.println("Scores after removal: " + scores);
int aliceScore = scores.get("Alice");
System.out.println("Alice's score: " + aliceScore);
boolean containsCharlie = scores.containsKey("Charlie");
System.out.println("Contains Charlie: " + containsCharlie);
}
}
No exemplo acima, criamos uma HashMap
instância e adicionamos as pontuações de alguns alunos. Em seguida, removemos um par de valores-chave HashMap
dele e obtemos o valor correspondente por chave. Finalmente, verificamos HashMap
se uma chave específica está contida em .
3. Mapa de árvore
TreeMap
É Map
outra classe de implementação comum da interface, implementada com base na árvore vermelha e preta, pode classificar chaves e fornecer uma série de métodos relacionados à classificação. TreeMap
Aqui estão alguns métodos comumente usados :
put(K key, V value)
: adicione o par de valores-chave especificado aTreeMap
.remove(Object key)
: RemovaTreeMap
dele .get(Object key)
: Retorna o valor correspondente à chave especificada.containsKey(Object key)
: verificaTreeMap
se a chave especificada está incluída.size()
: RetornaTreeMap
o número de pares de valores-chave.firstKey()
: RetornaTreeMap
a primeira chave da string.lastKey()
:TreeMap
A última chave no retorno.
Aqui está um TreeMap
exemplo de código usado:
import java.util.TreeMap;
import java.util.Map;
public class TreeMapExample {
public static void main(String[] args) {
Map<String, Integer> scores = new TreeMap<>();
scores.put("Alice", 90);
scores.put("Bob", 80);
scores.put("Charlie", 95);
System.out.println("Scores: " + scores);
scores.remove("Bob");
System.out.println("Scores after removal: " + scores);
int aliceScore = scores.get("Alice");
System.out.println("Alice's score: " + aliceScore);
String firstKey = scores.firstKey();
String lastKey = scores.lastKey();
System.out.println("First key: " + firstKey);
System.out.println("Last key: " + lastKey);
}
}
No exemplo acima, criamos uma TreeMap
instância e adicionamos as pontuações de alguns alunos. Por TreeMap
ser baseado em uma implementação de árvore rubro-negra, a ordem das chaves será classificada de acordo com a ordem natural das chaves. Em seguida, removemos um par de valores-chave TreeMap
dele e obtemos o valor correspondente por chave. Finalmente, obtemos a primeira e a última chave usando o método firstKey()
and .lastKey()
TreeMap
4. LinkedHashMap
LinkedHashMap
É Map
outra classe de implementação da interface, que se baseia na implementação de tabela hash e lista vinculada, e mantém a ordem de inserção de pares chave-valor. LinkedHashMap
Aqui estão alguns métodos comumente usados :
put(K key, V value)
: adicione o par de valores-chave especificado aLinkedHashMap
.remove(Object key)
: RemovaLinkedHashMap
dele .get(Object key)
: Retorna o valor correspondente à chave especificada.containsKey(Object key)
: verificaLinkedHashMap
se a chave especificada está incluída.size()
: RetornaLinkedHashMap
o número de pares de valores-chave.
Aqui está um LinkedHashMap
exemplo de código usado:
import java.util.LinkedHashMap;
import java.util.Map;
public class LinkedHashMapExample {
public static void main(String[] args) {
Map<String, Integer> scores = new LinkedHashMap<>();
scores.put("Alice", 90);
scores.put("Bob", 80);
scores.put("Charlie", 95);
System.out.println("Scores: " + scores);
scores.remove("Bob");
System.out.println("Scores after removal: " + scores);
int aliceScore = scores.get("Alice");
System.out.println("Alice's score: " + aliceScore);
boolean containsCharlie = scores.containsKey("Charlie");
System.out.println("Contains Charlie: " + containsCharlie);
}
}
No exemplo acima, criamos uma LinkedHashMap
instância e adicionamos as pontuações de alguns alunos. Por LinkedHashMap
ser implementado com base em tabelas hash e listas vinculadas, ele mantém a ordem de inserção dos pares chave-valor. Em seguida, removemos um par de valores-chave LinkedHashMap
dele e obtemos o valor correspondente por chave. Finalmente, verificamos LinkedHashMap
se uma chave específica está contida em .
Resumir
Neste artigo, fornecemos uma introdução detalhada às Map
interfaces em Java e suas classes de implementação comuns : e HashMap
. Ao compreender suas características e uso, você pode escolher a classe de implementação apropriada para armazenar e operar pares de valores-chave de acordo com as necessidades reais.TreeMap
LinkedHashMap
Map
HashMap
É adequado para cenários onde os pares de valores-chave precisam ser encontrados e inseridos rapidamente, TreeMap
para cenários onde as chaves precisam ser classificadas e LinkedHashMap
para cenários onde a ordem de inserção precisa ser mantida.
Espero que este artigo ajude você a entender e usar Map
interfaces Java!
Referências:
Em anexo: código de exemplo
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 90);
scores.put("Bob", 80);
scores.put("Charlie", 95);
System.out.println("Scores: " + scores);
scores.remove("Bob");
System.out.println("Scores after removal: " + scores);
int aliceScore = scores.get("Alice");
System.out.println("Alice's score: " + aliceScore);
boolean containsCharlie = scores.containsKey("Charlie");
System.out.println("Contains Charlie: " + containsCharlie);
}
}
import java.util.TreeMap;
import java.util.Map;
public class TreeMapExample {
public static void main(String[] args) {
Map<String, Integer> scores = new TreeMap<>();
scores.put("Alice", 90);
scores.put("Bob", 80);
scores.put("Charlie", 95);
System.out.println("Scores: " + scores);
scores.remove("Bob");
System.out.println("Scores after removal: " + scores);
int aliceScore = scores.get("Alice");
System.out.println("Alice's score: " + aliceScore);
String firstKey = scores.firstKey();
String lastKey = scores.lastKey();
System.out.println("First key: " + firstKey);
System.out.println("Last key: " + lastKey);
}
}
import java.util.LinkedHashMap;
import java.util.Map;
public class LinkedHashMapExample {
public static void main(String[] args) {
Map<String, Integer> scores = new LinkedHashMap<>();
scores.put("Alice", 90);
scores.put("Bob", 80);
scores.put("Charlie", 95);
System.out.println("Scores: " + scores);
scores.remove("Bob");
System.out.println("Scores after removal: " + scores);
int aliceScore = scores.get("Alice");
System.out.println("Alice's score: " + aliceScore);
boolean containsCharlie = scores.containsKey("Charlie");
System.out.println("Contains Charlie: " + containsCharlie);
}
}