Me deparei com um pedaço de código onde encontrei
public class MapImpl {
private static MapImpl mpl = new MapImpl();
Map<String,String> hm;
private MapImpl() {
hm = new HashMap<>();
}
public addContentsToMap(Map<String,String> m){
this.hm=m;
}
public Map returnMap(){
new HashMap<>(hm);
}
}
Eu gosto de saber aqui que, quando o construtor padrão é chamado, o mapa é inicializado para o hashmap e, quando addContentsToMap é chamado, o mapa é formado com valores.
Vejo que o returnMap usa o construtor do HashMap (Mapa m). Passei pelo código fonte do HashMap, mas não tinha noção.
Respostas:
3 para resposta № 1É necessária qualquer implementação de Map
interface e constrói um HashMap
que também é uma implementação de Map
interface.
Desenvolvedores como Hash-Collections (HashSet
, HashMap
etc.) incluindo HashMap
porque eles fornecem o esperado O(1)
obter e contém tempo.
Pode ser útil quando você tiver um Map
o que não é um HashMap
(por exemplo. Properties
) e você sabe que ele será grande e que você lerá muitas vezes, é útil mudar para uma implementação diferente de um Map
.
public HashMap(Map<? extends K,? extends V> m)
Constrói um novo HashMap com os mesmos mapeamentoscomo o mapa especificado. O HashMap é criado com o fator de carga padrão (0,75) e uma capacidade inicial suficiente para manter os mapeamentos no mapa especificado.
Parâmetros:
m
- o mapa cujos mapeamentos devem ser colocados neste mapaLança:
NullPointerException
- se o mapa especificado for nulo