2017-06-22 70 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) {** 

我想IF語句運行,如果數據類型布爾的HashMap的「價值」等於嘗試底部。我試過.get()但那不起作用。Hashmap - 鍵:字符串,值:布爾值。如何測試if語句中的值?

+1

「我試過.get(),但那不起作用。」那麼你究竟做了什麼?想必你對「書籍」鍵的價值感興趣......所以無論你做什麼,你都需要使用它。 (或者,您可以遍歷'entrySet'而不是'keySet' ...) –

+0

您是如何嘗試使用'.get()'的? 'if(library.get(books))'應該工作得很好。還是你嘗試使用書籍? (這是一本書作爲鍵的字符串,而不是地圖) – Tezra

+0

是的,你應該學會如何用'get()'完成它,然後試着理解爲什麼你最好使用'entrySet()'並得到那個工作。 – Axel

回答

0

使用下面的代碼,將工作

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

     } 
    } 
+0

散列表是。 'String libValue = library.get(books);'是類型錯誤匹配編譯器錯誤。 – Tezra

+0

比較'boolean'到'boolean'以得到一個'boolean'結果,如'if(libValue == true)',是冗餘重複和多餘的。 –

+0

答案缺乏處理書籍空值的問題。 – Markus

0

而不是拿到鑰匙盤,我會得到的條目集 - 這意味着你可以遍歷鍵/值對,而不是查找每個關鍵。例如,要打印所有的書有true值:

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

或者處理無效,如果你的值可以爲null:

for (Map.Entry<String, Boolean> entry : map.entrySet()) { 
    if (TRUE.equals(entry.getValue()) { 
     System.out.println(entry.getKey()); 
    } 
} 
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(...))