有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何检查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) 个答案

  1. # 1 楼答案

    在循环中返回true是不正确的——这样,如果映射中的任何列表有六个元素,而不是所有元素都有,则方法将返回true。相反,如果列表没有六个元素,则应该返回false,并且只在迭代完值后返回true

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

    请注意,顺便说一句,使用Java8的流可以使这个代码段更干净。它不会更高效(在最坏的情况下仍然是O(n)操作),但肯定会更简洁:

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