我有一个大小为101键的哈希映射,但我肯定知道其中有6个没有数据,而且可能还有更多没有数据的哈希映射。空索引里面究竟是什么?它是空的吗?或者是否有一个哈希(索引).isEmpty()方法,我可以用来查看它是否为空?
我意识到hashmap中有一个isEmpty方法,但我认为只检查整个地图是否为空而不仅仅是一个索引。
答案 0 :(得分:1)
我意识到有一个isEmpty方法 在hashmap里面,但我想到了 仅检查整个地图是否 空的不只是一个索引。
我认为你要找的是containsKey(Object)
method。根据文件:
如果此地图包含a,则返回
true
映射指定的键。更多 正式地,当且仅当,返回true
此映射包含键的映射k
,(key==null ? k==null : key.equals(k))
。 (最多可以 一个这样的映射。)<强>参数:强>
key
- 要测试其在此地图中的存在的关键<强>返回:强>
true
如果此地图包含指定键的映射
答案 1 :(得分:0)
好吧,对于没有数据到达那里的密钥,你必须在那里put
。
如果您执行了map.put(key, null)
,那么该密钥的数据为null
。您总是必须为方法提供第二个参数,而不仅仅是map.put(key)
。
如果您确定某个密钥应该没有数据,您可以尝试进入调试模式并为myMap.get(myEmptyKey)
设置监视并查看您获得的内容(如果没有数据是空对象或某些内容)否则,你应该能够看到)。
编辑:有些代码可以帮助您,但如果我理解正确,您可以执行以下操作:
for (Object obj : list) {
if (matchesCriteriaX(obj)) {
map.put("X", obj);
else if (matchesCriteriaY(obj)) {
map.put("Y", obj);
}
}
好吧,如果你这样做并尝试做map.get("X")
,但你实际上从未为该键添加任何东西(因为没有对象匹配标准X),你肯定会得到null
。
另一方面,如果你做了类似
的事情Map<String, List<Object>> map = new HashMap<String, List<Object>>();
map.add("X", new ArrayList<Object>());
map.add("Y", new ArrayList<Object>());
for (Object obj : list) {
if (matchesCriteriaX(obj)) {
List<Object> list = map.get("X");
list.add(obj);
else if (matchesCriteriaY(obj)) {
List<Object> list = map.get("Y");
list.add(obj);
}
}
然后你可以通过map.get("x").isEmpty()
检查一个类别是否为空,因为List有这个方法(如果没有对象符合关键标准,它将为空)。
答案 2 :(得分:0)
从你说的话来看,我怀疑是这样的:
Map<SomeKey, List<SomeValue>> yourMap;
如果是这种情况,你可以做的是
if( yourMap.contains(someKey) ){
List<SomeValue> someList = yourMap.get(someKey);
if(someList.size() == 0){
// it's empty, do something?
}
}