2017-07-19 4 views
-1

私はハッシュマップを作成しました。キーの文字列と値としてのオブジェクトを含んでいます。ただし、値の一部を取得しようとすると、nullの結果が返されます。Java HashMapは、一部のキーでnull値を返します。 。 。時々

// This returns all the keys and their values. 
    for (String key : DevicesUsed.devicesUsedMap.keySet()) { 
     if(DevicesUsed.devicesUsedMap.containsKey(key)) { 
      System.out.println(key + " exists"); 
      System.out.println(key + "\t" + DevicesUsed.devicesUsedMap.get(key)); 
     } else { 
      System.out.println("Key does not exist."); 
     } 
    } 

    // This only works for some of the keys, that worked in the above code. 
    System.out.println(DevicesUsed.devicesUsedMap.get("WHITEALL"));  // Works. 
    System.out.println(DevicesUsed.devicesUsedMap.get("REDCOVE"));  // Returns null. 

screen shot of the console output

キーのいくつかは、一つのブロックではなく、他に存在する理由として非常に混乱して。

+0

昨日または今朝この同じ質問をしていませんでしたか? –

+0

これをデバッガで実行すると、どのような情報が得られますか?そして、まだエラーを分離しようとするテストプログラム、[mcve]を作成しましたか?もしそうなら、投稿してください。そうでない場合は、作成を検討してください。 –

+0

@ J-Alexキーは 'String'のように見えるので、そうではありません。 – chrylis

答えて

3

'WHITEALL exist'には1つのスペースが含まれていますが、'REDCOVE exist' - 2個です。

'REDCOVE'の代わりに'REDCOVE 'がキーのように見えます。

+1

すべてのキーが8文字の文字列で、右にスペースが埋め込まれているようです。 – Andreas

+0

私は、キーを作成したときに末尾のスペースを取り除くことを忘れているようです。それらはバイト配列から読み込まれていました。今、それは動作するように見えます。 – CelestialCoyote

0

あなたからのスクリーンショットREDCOVEには最後にスペースがあります。お試しくださいSystem.out.println(DevicesUsed.devicesUsedMap.get("REDCOVE "));

関連する問題