簡體   English   中英

如何檢查hashmap中的值

[英]How to check values in hashmap

我想制作一種方法來檢查我是否能看到每個樁中是否有6張牌。 這是我的方法

public boolean checkIfPileHasSixCards() {

        map.put("tpile1", tpile1);
        map.put("tpile2", tpile2);
        map.put("tpile3", tpile2);
        for (ArrayList<Card> value : map.values()) {
              int size=value.size();
              if(size==6) {
                  return true;
              }
        }
        return false;

    }

我的邏輯是否正確,是否有更有效的方法可以迭代值並檢查每個值(ArrayList)大小是否為6?

在循環內返回true是不正確的 - 這樣,如果地圖中的任何列表包含六個元素,則您的方法將返回true ,而不是所有這些元素都有 相反,如果列表沒有六個元素,則應返回false ,並且只有在完成迭代值后才返回true

for (List<Card> value : map.values()) {
      int size = value.size();
      if(size != 6) {
          return false;
      }
}
return true;

順便提一下,使用Java 8的流可以使這個代碼段變得更加清晰。 它不會更有效(在最壞的情況下它仍然是O(n)操作),但它肯定會更簡潔:

return map.values().stream().allMatch(l -> l.size() == 6);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM