2017-06-22 3 views
0
/ public void getFinishedBooks(HashMap<String, Boolean> library) { 

if (library.size() < 1) { 

    System.out.println("No books in Library"); 

} else { 

    for (String books : library.keySet()) { 

    **if (library.value == true) {** 

のステートメントを実行する場合、データタイプブールのハッシュマップ「の値が」試すに等しい場合、私は下をしたいです。私は試みました.get()が動作していません。それはハッシュマップ - キー:文字列、値:ブール値。 ifステートメント内の値をテストするにはどうすればよいですか?

for (String books : library.keySet()) { 
     if(books != null){ 
     Boolean libValue = library.get(books); 
     if (libValuetrue) { 
      //added as per your code 
     } 

     } 
    } 
+1

「私は試みました.get()が動作していません」まあまあ*あなたは試しましたか?おそらく、あなたは 'books'キーに関連する価値に興味を持っているでしょう...あなたが何をするにしても、それを使う必要があります。 (あるいは、 'keySet'の代わりに' entrySet'を反復することができます...) –

+0

'.get()'をどうやって使ってみましたか? 'if(library.get(books))'はうまくいくはずです。または、あなたは本を手に入れようとしましたか? (マップではなくキーとして使われる本の文字列です) – Tezra

+0

はい、あなたは 'get()'でそれを行う方法を学び、なぜ 'entrySet()'を使うのが良いか理解しようとするべきです。それを働かせてください。 – Axel

答えて

0

使用、私は、エントリセットを取得したい - あなたではなく、ルックアップするより、キー/値のペアを反復できることを意味しています各キーをもう一度押します。

for (Map.Entry<String, Boolean> entry : map.entrySet()) { 
    if (entry.getValue()) { 
     System.out.println(entry.getKey()); 
    } 
} 

またはあなたの値がnullの場合もあればNULLかどうかを処理するために:たとえば、true値を持つすべての書籍を印刷する

for (Map.Entry<String, Boolean> entry : map.entrySet()) { 
    if (TRUE.equals(entry.getValue()) { 
     System.out.println(entry.getKey()); 
    } 
} 
+0

ハッシュマップはです。 'String libValue = library.get(books);'はタイプミスマッチコンパイラエラーです。 – Tezra

+0

'boolean'と' boolean'を比較すると 'if(libValue == true)'のように 'boolean'の結果が得られますが、繰り返し重複しています。 –

+0

答えは本のnull値の扱いに欠けています。 – Markus

0

よりもむしろキーセットを取得する動作するコードの下

0
if (library.isEmpty()) { 
    System.out.println("No books in Library"); 
} else { 
    for (String books : library.keySet()) { 
     if (library.get(books)) { 

代わり

for (Entry<String, Boolean> entry : library.entrySet()) { 
     if (entry.getValue()) { 

しかし、 Set<String>を使用するのが理想的でした。

Set<String> library = new HashSet<>(); 

if (library.contains(...)) 
関連する問題