如何检查哈希图中的值

时间:2018-09-29 15:58:00

标签: java loops dictionary arraylist 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?

1 个答案:

答案 0 :(得分:3)

在循环内返回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);