2017-04-17 13 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)); 
     } 
    } 
} 

私は以下のように出力を取得しています:なぜこのハッシュマップ出力が得られますか?

null 
null 
null 
1 
1 

私はなぜ私は三回nullと2倍の一つとして、出力を取得しています得ていないのです。

+0

なぜ最初に出力がNULLとして返されるのですか – Swati

+3

'put()'関数は[キーに関連付けられた古い値を返すように定義されているため](https://docs.oracle.com/javase/8/docs/ api/java/util/HashMap.html#put-KV-)。 –

+0

@アンディ・トーマスもっと説明していただければ幸いです。 – Swati

答えて

0

ための同様1.を印刷して1で同じキー、Lのために私はなぜ私は「3回ヌルと 2倍の1」として出力を取得しています得ていないのです。

あなたはputメソッドのJava仕様を読む必要があるでしょう。

put(K key, V value)

キーには マッピングが存在しない場合、キー、またはnullに関連付けられた以前の値を返します。

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)); 

出力:

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

arrアレイ内ではないすべてのキーが印刷されているなぜあなたは迷っている場合は、この背後にある理由が何であるか、あなたがしたいことはこれです

単純に:

put(K key, V value) asso指定された値を の指定されたキーでこのマップに返します。以前マップにキーのマッピング が含まれていた場合は、古い値が置き換えられます。

簡単に言えば、重複キーは、それが上書きされます、その後追加する場合、HashMapキーは、ユニークです。

0

があった場合Hashmapput機能は、ハッシュマップの値を挿入し、キーがすでに存在する場合、それは新しいもので、キーの古い値を置き換え、キーに関連付けられた以前の値を返す、またはnullキーのマッピングはありません。最初の3つの値、すなわち、Hashmapに存在しないため10,3,34を挿入すると、nullが返されますが、3をもう一度挿入すると、このキーは既に存在します。したがって、putは古い値を置き換え、それは10

+0

ここでは、次のドキュメントを参照できます。https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#put(K,%20V) –

関連する問題