> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/mapas.md).

# Mapas

1. Implementa unha clase **EntradaMapa\<K,V>** que permita xestionar nodos nos que se almacenen pares xenéricos clave - valor.
   1. Implementa un constuctor que reciba a clave e o valor correspondente, asi como os getters e setters e o método toString()
2. Implementa unha clase **Mapa\<K,V>**, que vai a almacenar unha colección de EntradaMapa. Para isto:
   1. A clase Mapa traballa por debaixo unha **estructura de datos tipo array de lonxitude 10** que se inicializa co constructor en que non redimensiona, para facilitar a realización do exercicio.
   2. Implementa un método privado **getIndice(K chave)** que devolve a posición do indice no que se almacena unha chave concreta. Varias consideracións:
      1. Supoñemos que non hai colisións de cara a traballar en este exercicio
      2. A función calcula o enteiro en base a función hash da chave e a lonxitude do array
      3. O indice debe ser sempre un valor enteiro positivo, aínda que as funcións hash poden devolver valores negativos
   3. Implementa un método **put(K chave, V valor)** que vai a insertar a entrada no Mapa de acordo a seguinte lóxica:
      1. É necesario determinar o índice de inserción no que se vai a almacenar a entrada do mapa
      2. Crea unha nova entrada cos valores chave e valor
      3. Accede á posición do índice do array:
         1. Se está baleira, inserta a entrada
         2. Se non está baleira:
            1. Se a clave coincide, actualiza o valor
            2. Se a clave non coincide, mostra por pantalla a mensaxe: "Non foi posible a inserción, houbo unha colisión na posición"
   4. Implementa un método **get(K chave)**, que devolve o contido asociado á chave, para isto, será necesario:
      1. Determinar o índice de inserción no que se atopa a chave coa que estamos traballando
      2. Recupera a entrada da posición:
         1. Se a chave da entrada coincide coa chave do parámetro, devolvemos o elemento
         2. En outro caso, devolvemos null
   5. Implementa un método **toString()**, que devolva unha cadea de texto co contido do mapa. Ten en conta o seguinte:
      1. A clase e EntradaMapa ten que ter definido un método toString()
      2. Recorre o array de entradas con un for-each, incluindo no String resultante unicamente os valores que non sexan nulos
3. Implementa unha clase **App** que permita probar a clase anterior, cos seguintes datos:
   1. Crea un Mapa\<String, Integer> e engade os seguintes pares de valores: {"casa", 15}, {"can", 4}, {"gato", 7} e {"paxaro", 2}.
   2. Mostra por pantalla o contido do mapa
   3. Recupera e mostra por pantalla o valor de "can" e de "rato"
   4. Actualiza o valor de casa a 99 e recupera o seu valor
   5. Un exemplo de colisión estaría producida polas cadeas "Aa" e "BB" xa que van a producir o mesmo hash (2112), que modulo 10 vai a ser 2. Fai a proba a insertar as claves {"Aa", 100} e {"BB", 200}. A continuación mostra o contido do Mapa


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/mapas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
