J'ai rencontré un morceau de code où j'ai trouvé
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);
}
}
J'aime savoir ici que lorsque le constructeur par défaut est appelé, la carte est initialisée à hashmap et lorsque addContentsToMap est appelée, une carte est formée avec des valeurs.
Je vois que returnMap utilise le constructeur de HashMap (Map m). J'ai parcouru le code source de HashMap mais je ne savais rien.
Réponses:
3 pour la réponse № 1Il faut toute mise en œuvre de Map
interface et construit un HashMap
qui est aussi une mise en œuvre de Map
interface.
Des développeurs comme Hash-Collections (HashSet
, HashMap
etc.) y compris HashMap
parce qu'ils fournissent attendu O(1)
obtenir et contient le temps.
Cela peut être utile, une fois que vous avez un Map
ce qui n'est pas HashMap
(par exemple. Properties
) et vous savez qu'il sera grand et que vous le lirez plusieurs fois, il est utile de passer à une autre implémentation d'un Map
.
public HashMap(Map<? extends K,? extends V> m)
Construit un nouveau HashMap avec les mêmes mappagescomme la carte spécifiée. La table de hachage est créée avec un facteur de charge par défaut (0,75) et une capacité initiale suffisante pour contenir les mappages dans la mappe spécifiée.
Paramètres:
m
- la carte dont les cartographies doivent être placées dans cette carteJette:
NullPointerException
- si la carte spécifiée est nulle