我有一个有各种布尔和整数的课程。
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”?
答案 0 :(得分:4)
这样做:
boolean isEmpty() {
for (int i : mInts.values()) if (i != 0) return false;
for (boolean b : mBools.values()) if (b) return false;
return true;
}
阅读map tutorial以获取有关迭代地图内容的更多信息。
答案 1 :(得分:2)
在每张地图上调用values()
method;您可以遍历返回的Collection
值。然后,您可以根据具体情况检查每个值,看看它们是0
还是false
。
保持boolean
,初始化为true
,如果到目前为止所有内容都为“空”。如果值不是false
或0
,则将其设置为false
。
答案 2 :(得分:2)
您只需迭代地图中的值:
boolean isEmpty {
for (Integer i : mInts.values()) {
if (i > 0) {
return false;
}
}
for (Boolean b : mBools.values()) {
if (b) {
return false;
}
}
return true;
}