2017-04-17 4 views
0
import java.util.HashMap; 

public class Map { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     int arr[] = {10, 3, 34, 3, 10}; 

     HashMap<Integer, Integer> hmap=new HashMap<Integer, Integer>(); 

     for (int i = 0; i < arr.length; i++) { 
      System.out.println(hmap.put(arr[i], 1)); 
     } 
    } 
} 

Ich erhalte die Ausgabe wie folgt:Warum bekomme ich diese Hashmap-Ausgabe?

null 
null 
null 
1 
1 

Ich bin nicht immer, warum bin ich die Ausgabe als dreimal null und zweimal machtlos.

+0

Warum gibt es anfangs eine Ausgabe als null – Swati

+3

Weil die 'put()' Funktion ist [definiert, um den alten Wert mit dem Schlüssel verbunden] (https://docs.oracle.com/javase/8/docs/ api/java/util/HashMap.html # put-KV-). –

+0

@Andy Thomas, wäre es toll, wenn Sie mehr erklären .. – Swati

Antwort

0

ich nicht, warum bin ich erhalte die Ausgabe als „dreimal null und zweimal ein“ bekommen.

zu verstehen, die Gründe hinter dem Verhalten Sie die Java-Spezifikation auf der Put-Methode lesen müssen.

put(K key, V value)

gibt den vorherigen Wert mit der Taste zugeordnet ist, oder null, wenn keine Zuordnung für Schlüssel war.

, was Sie wollen, ist dies:

int arr[] = {10,3,34,3,10}; 

HashMap<Integer,Integer> hmap = new HashMap<Integer,Integer>(); 
for (int i = 0; i < arr.length; i++) { 
    hmap.put(arr[i],1); 
} 

hmap.forEach((k, v) -> System.out.println("key = " + k + " value = " + v)); 

Ausgang:

key = 34 value = 1 
key = 3 value = 1 
key = 10 value = 1 

wenn Sie sich fragen, warum nicht alle Schlüssel innerhalb des arr Array gedruckt werden, dahinter ist der Grund, einfach weil:

put(K key, V value) asso Gibt den angegebenen Wert mit dem in dieser Map angegebenen Schlüssel an. Wenn die Karte zuvor eine Zuordnung für den Schlüssel enthielt, wird der alte Wert ersetzt.

Um es einfach auszudrücken, HashMap Schlüssel eindeutig ist, wenn überhaupt doppelten Schlüssel hinzugefügt werden soll, dann wird es überschrieben.

0

Die put Funktion der Hashmap fügt den Wert in der HashMap, und wenn der Schlüssel bereits vorhanden ist, ersetzt er den alten Wert des Schlüssels mit dem neuen und gibt den vorherigen Wert mit Schlüssel zugeordnet ist, oder null wenn es Keine Zuordnung für Schlüssel. Wenn Sie die ersten drei Werte eingeben, dh 10,3,34, da sie nicht in Hashmap existieren, wird null zurückgegeben, aber wenn Sie 3 erneut eingeben, ist dieser Schlüssel bereits vorhanden, sodass put den alten Wert ersetzt und den alten Wert zurückgibt für den gleichen Schlüssel, 1, l ist so druckt 1. Ähnliche für 10.

+0

Und hier finden Sie Dokumentation: https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#put(K,%20V) –

Verwandte Themen