0

我有一堂有各种布尔和整数的课。

class Animal  {

    boolean mHappy = false;
    boolean mHungry = false;
    boolean mSleeping = false;
    int mCost = 0;
    int mWeight = 0;


    boolean isEmpty() {
        return !mHappy && !mHungry && !mSleeping && mCost == 0 && mWeight == 0;
    }
}

boolean isEmpty() 方法会告诉我所有值是否为空。

现在,我想将我所有的数据移到 HashMaps 中:

class Animal  {

    HashMap<String, Boolean> mBools = new HashMap<String, Boolean>(){{
        put("mHappy", false);
        put("mHungry", false);
        put("mSleeping", false);
        }
    };

    HashMap<String, Integer> mInts = new HashMap<String, Integer>(){{
        put("mCost", 0);
        put("mWeight", 0);
        }
    };


    boolean isEmpty() {
        // MY QUESTION: How can I make this function iterate through each HashMap,
        // regardless of size, and check to make sure it's "false" or "0" like this
        // line did when I only was using static booleans and integers?
        return !mHappy && !mHungry && !mSleeping && mCost == 0 && mWeight == 0;
    }
}

我的问题是关于“boolean isEmpty()”方法,如何让这个函数遍历每个 HashMap,无论大小,并检查以确保每个值是“false”或“0”?

4

3 回答 3

4

这将做到:

boolean isEmpty() {
    for (int i : mInts.values()) if (i != 0) return false;
    for (boolean b : mBools.values()) if (b) return false;
    return true;
}

阅读地图教程,了解更多关于遍历地图内容的信息。

于 2013-10-15T17:13:14.513 回答
2

在每张地图上调用values()方法;您可以遍历返回Collection的值。然后您可以检查每个值以查看它们是否存在0false视情况而定。

如果到目前为止一切都是“空的”,请保留 a boolean,初始化为。如果值不是,则将其true设置为或。false0false

于 2013-10-15T17:10:21.000 回答
2

您只需要遍历地图中的值:

boolean isEmpty {
  for (Integer i : mInts.values()) {
    if (i > 0) {
      return false;
    }
  }
  for (Boolean b : mBools.values()) {
    if (b) {
      return false;
    }
  }
  return true;
}
于 2013-10-15T17:13:35.813 回答