我想避免使用for循环来迭代HaspMap以找到一个键,然后拿起与该键对应的值...任何人都可以帮我实现相同的......? 下面给出的是我使用forloop的代码,我想用containsKey函数替换()
for (Entry<Long, Long> entry : sessionTimeStampHash.entrySet())
//if(sessionTimeStampHash.containsKey(sessionID))
{
if (entry.getKey().equals(sessionID))
{
sessionTimeStamp = entry.getValue();
}
}
答案 0 :(得分:10)
根本不需要循环。地图是关联集合,这意味着它们是为快速基于密钥的查找而设计和优化的。地图应该以这种方式使用:
sessionTimeStamp = sessionTimeStampHash.get(sessionID);
if (sessionTimeStamp != null) {
// do something with sessionTimeStamp
}
或使用containsKey()
:
if (sessionTimeStampHash.containsKey(sessionID)) {
sessionTimeStamp = sessionTimeStampHash.get(sessionID);
// do something with sessionTimeStamp
}
请参阅Java Tutorial以了解有关地图和其他馆藏的更多信息。
答案 1 :(得分:2)
if(sessionTimeStampHash.contains(sessionID) {
sessionTimeStamp = sessionTimeStampHash.get(sessionID);
} else {
//Create session
sessionTimeStamp = getSessionTimeStamp();
sessionTimeStampHash.put(sessionId, sessionTimeStamp);
}