关于访问计数有点困惑

时间:2013-09-04 08:52:25

标签: java concurrenthashmap

现在我在项目中的职责是访问计数模块。 如果用户重复登录两小时,则应将其视为一次。

我使用concurrentHashMap来设置用户ID和访问时间。

private static Map<String,Date> loginTimeMap = new ConcurrentHashMap<String, Date>();

每次用户访问索引页面时,程序都会比较时间。

Date date = loginTimeMap.get(user.getSuUserId());
if(date==null||DateUtil.getHourInterval(new Date(),date)>=DefinedValue.LIMIT_TIME){
    accessCount=accessCount+1;
    loginTimeMap.put(user.getSuUserId(), new Date());
}
代码中的

LIMIT_TIME是一个两个小时的常量。

如果地图的大小超过10000,那么loginTimeMap会降低服务器的速度吗?

真的很抱歉我的英语不好!

1 个答案:

答案 0 :(得分:1)

  

如果地图的大小超过10000,那么loginTimeMap会降低服务器的速度吗?

HashMap的时间复杂度为O(1)。也就是说,它散列,然后直接达到价值。它不会搜索该值。这意味着它的性能与数组中的元素数量不成比例,尽管有10,000个条目,它可能会有点内存!