[Java Basics] Explicação detalhada do Java Map

prefácio

Na estrutura de coleta de Java, Mapas 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. MapA 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 Mape suas classes de implementação comuns em detalhes, incluindo HashMap, , TreeMape LinkedHashMap, e fornecerá alguns exemplos de código.

1. Visão geral do mapa

MapUma interface é uma coleção de pares de valores-chave herdados de e e de outros métodos Collectionna 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É Mapuma 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. HashMapAqui estão alguns métodos comumente usados :

  • put(K key, V value): adicione o par de valores-chave especificado a HashMap.
  • remove(Object key): Remova HashMapdele .
  • get(Object key): Retorna o valor correspondente à chave especificada.
  • containsKey(Object key): verifica HashMapse a chave especificada está incluída.
  • containsValue(Object value): verifica HashMapse o valor especificado está incluído.
  • size(): Retorna HashMapo número de pares de valores-chave.

Aqui está um HashMapexemplo 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 HashMapinstância e adicionamos as pontuações de alguns alunos. Em seguida, removemos um par de valores-chave HashMapdele e obtemos o valor correspondente por chave. Finalmente, verificamos HashMapse uma chave específica está contida em .

3. Mapa de árvore

TreeMapÉ Mapoutra 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. TreeMapAqui estão alguns métodos comumente usados :

  • put(K key, V value): adicione o par de valores-chave especificado a TreeMap.
  • remove(Object key): Remova TreeMapdele .
  • get(Object key): Retorna o valor correspondente à chave especificada.
  • containsKey(Object key): verifica TreeMapse a chave especificada está incluída.
  • size(): Retorna TreeMapo número de pares de valores-chave.
  • firstKey(): Retorna TreeMapa primeira chave da string.
  • lastKey(): TreeMapA última chave no retorno.

Aqui está um TreeMapexemplo 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 TreeMapinstância e adicionamos as pontuações de alguns alunos. Por TreeMapser 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 TreeMapdele 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É Mapoutra 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. LinkedHashMapAqui estão alguns métodos comumente usados :

  • put(K key, V value): adicione o par de valores-chave especificado a LinkedHashMap.
  • remove(Object key): Remova LinkedHashMapdele .
  • get(Object key): Retorna o valor correspondente à chave especificada.
  • containsKey(Object key): verifica LinkedHashMapse a chave especificada está incluída.
  • size(): Retorna LinkedHashMapo número de pares de valores-chave.

Aqui está um LinkedHashMapexemplo 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 LinkedHashMapinstância e adicionamos as pontuações de alguns alunos. Por LinkedHashMapser 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 LinkedHashMapdele e obtemos o valor correspondente por chave. Finalmente, verificamos LinkedHashMapse uma chave específica está contida em .

Resumir

Neste artigo, fornecemos uma introdução detalhada às Mapinterfaces 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.TreeMapLinkedHashMapMap

HashMapÉ adequado para cenários onde os pares de valores-chave precisam ser encontrados e inseridos rapidamente, TreeMappara cenários onde as chaves precisam ser classificadas e LinkedHashMappara cenários onde a ordem de inserção precisa ser mantida.

Espero que este artigo ajude você a entender e usar Mapinterfaces Java!

Referências:

Em anexo: código de exemplo

HashMapExample.java

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);
    }
}

TreeMapExample.java

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);
    }
}

LinkedHashMapExample.java

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);
    }
}

Acho que você gosta

Origin blog.csdn.net/qq_21484461/article/details/131384612
Recomendado
Clasificación