2014-04-29 3 views
0

J'ai testé HashMap récemment et je suis tombé sur un problème intéressant. J'ai un tableau, a3, que j'ai défini des valeurs arbitraires. Je prends alors ce tableau et le place dans une carte d'instance HashMap.Utilisation de HashMap put()

Mon problème est que lorsque j'attribue une instance Object à la valeur de put ("a3", a3), je n'arrive pas à imprimer l'adresse de l'instance.

Par exemple:

HashMap<Object, Object> map = new HashMap<Object, Object>(); 
int[] a3 = new int[] {1, 2, 3, 4}; 

map.put("a3", a3); 

Quand j'appelle System.out.println (map.put ("a3", a3), je me donne une adresse en mémoire

Toutefois, si. Je crée une instance d'objet, puis essayez d'imprimer ce cas je reçois nulle.

Object copy = map.put("a3", a3); 
System.out.println(copy); 

l'exécution du segment ci-dessus me donne une valeur nulle.

Une raison pour laquelle ces deux déclarations, qui semblent identiques, me donnent des résultats différents?

Répondre

0

Lire la documentation API pour une HashMap. Null est renvoyé si aucune valeur n'existe dans la carte correspondant à ce que vous insérez.

http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#put%28K,%20V%29

Donc, si « a3 » existait sur la carte déjà, la vous obtiendrez un retour, mais comme il ne vous Retournons nulle. "a3" a été mis dans la carte mais vous n'avez pas imprimé la carte, vous avez imprimé le retour de put().

+0

Je comprends qu'aucune valeur est dans le HashMap, mais ma question est pourquoi il n'y a pas de valeur dans la HashMap. La méthode put() ne place-t-elle pas de valeur dans HashMap? Donc, si l'instance Object est assignée à la valeur qui est mise dans HashMap, System.out.println() ne devrait-elle pas imprimer l'adresse de ce qui est dans la HashMap? – Delfino

+0

C'est ce que je dis. Il y a une valeur dans la table de hachage mais put() ne retourne pas la hashmap. Ne pas faire 'System.out.println (copier)', faire 'System.out.println (map.get (" a3 "))' et vous le verrez là – JamesENL

+0

Est-ce que mon explication a du sens? – JamesENL

0

Comme @James_Massey disent, si vous consultez la documentation officielle, vous pouvez voir que la valeur de retour pour la méthode put() est:

la valeur précédente associée à la clé, ou null s'il n'y avait pas de mappage pour la clé . (Un retour nul peut également indiquer que la carte précédemment null avec la clé associée.)