"E, finalmente, vou falar sobre Map."
"Map, como você sabe, armazena um conjunto de pares chave-valor. As chaves devem ser únicas, mas os valores podem ser qualquer coisa. Se você adicionar um par chave-valor a um mapa e a coleção já contiver a chave, então o valor antigo será substituído pelo novo. Em outras palavras, a chave age como um índice especial que pode ser qualquer objeto ."
Mapa é um termo matemático que denota um conjunto de pares (x, y), em que cada x único corresponde a algum y.
Os programadores gostam muito de Map, então aqui apresentamos 4 coleções diferentes que implementam a interface Map:
"Aqui está sua estrutura de herança simples:"

"O amarelo indica que Entry é uma interface aninhada na interface Map ."
"A entrada foi adicionada para descrever um par de elementos como uma única entidade."
"Aqui estão os métodos de Map<K,V>:"
Métodos | Descrição |
---|---|
int size() |
Retorna o número de pares no mapa. |
boolean isEmpty() |
Verifica se o mapa está vazio. |
boolean containsKey(Object key) |
O mapa contém a chave especificada? |
boolean containsValue(Object value) |
O mapa contém o valor especificado? |
V get(Object key) |
Retorna o valor para a chave especificada. |
V put(K key, V value) |
Define um novo valor para a chave. O método retorna o valor antigo ou nulo |
putAll(Map<? extends K, ? extends V> m) |
Adiciona pares de outro mapa. |
void clear() |
Limpa o mapa, ou seja, remove todos os pares. |
Set<K>keySet() |
Retorna um conjunto de chaves. |
Collection<V>values() |
Retorna uma coleção de valores. |
Set<Map.Entry<K, V>>entrySet() |
Retorna um conjunto de pares. |
"K e V são os parâmetros de tipo para as chaves e valores."
"Bem, estou familiarizado com a maioria dos métodos, mas só trabalhei com alguns deles."
"O que mais você pode me dizer sobre a classe Entry?"
"Esta classe descreve um par de elementos. Ela possui alguns métodos:"
Métodos | Descrição |
---|---|
K getKey() |
Retorna a chave do par chave-valor. |
V getValue() |
Retorna o valor do par chave-valor. |
V setValue(V value) |
Define um novo valor no par chave-valor. |
"A entrada é conveniente, porque você pode passar um par para um método sem passar o mapa inteiro."
"Eu vejo."
"Agora vou examinar as implementações do mapa."
"O primeiro é HashMap . Ele usa tabelas de hash para armazenar elementos. Chaves e valores podem ser de qualquer tipo, bem como nulos. A ordem dos elementos pode mudar quando a coleção muda ."
"Elementos são armazenados em um HashMap como um conjunto de grupos ou baldes. O método hashCode() de um elemento determina em qual balde ele se encaixa."
"Falando de maneira bem grosseira, os elementos com um código hash de 1 a 100 caem no primeiro balde, aqueles com um valor de 101 a 200 caem no segundo e assim por diante."
"O objetivo de armazenar elementos dessa maneira é que podemos eliminar todos os elementos em baldes irrelevantes ao procurar ou remover elementos."
"Eu vejo."
"Existe um artigo muito bom sobre o HashMap. Recomendo que você o leia: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "
"A segunda coleção é LinkedHashMap . Sua principal diferença em relação ao HashMap é que ele também armazena itens como uma lista vinculada. Em um HashMap comum, a ordem dos elementos é indefinida e pode mudar com o tempo. E você pode obter um iterador de um LinkedHashMap e use-o para percorrer todos os elementos na ordem em que foram adicionados ao LinkedHashMap. Além disso, o LinkedHashMap possui um iterador que permite percorrer todos os pares na ordem do último uso/atividade."
"Há um artigo muito bom sobre LinkedHashMap. Aqui está: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "
"A terceira coleção sobre a qual gostaria de falar hoje é TreeMap ."
" TreeMap mantém seus elementos classificados em ordem crescente. Isso é obtido devido ao fato de que TreeMap usa uma árvore rubro-negra balanceada para armazenar elementos."
"Como resultado, o tempo de inserção e o tempo de pesquisa são muito baixos. Essa classe é uma ótima opção ao usar grandes quantidades de dados."
"E, claro, temos um artigo sobre TreeMap: https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "
"O que eu não te contei ainda?"
"WeakHashMap, mas Rishi me contou sobre isso alguns dias atrás."
"Quando foi isso?"
"Quando ele falou sobre SoftReference, WeakReference e PhantomReference."
"Eu acredito em você, considerando que você nomeou todos eles corretamente. Então vá relaxar. Vejo você esta noite."
"Tchau, Ellie."
GO TO FULL VERSION