使用hashMaps

时间:2011-02-17 10:01:27

标签: java

我想避免使用for循环来迭代HaspMap以找到一个键,然后拿起与该键对应的值...任何人都可以帮我实现相同的......? 下面给出的是我使用forloop的代码,我想用containsKey函数替换()

 for (Entry<Long, Long> entry : sessionTimeStampHash.entrySet()) 
 //if(sessionTimeStampHash.containsKey(sessionID)) 
 {
    if (entry.getKey().equals(sessionID)) 
    {
        sessionTimeStamp = entry.getValue();
    }
 }

2 个答案:

答案 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);
}

More