0

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

我使用 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 会减慢服务器速度吗?

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

4

1 回答 1

1

如果地图大小超过 10000,loginTimeMap 会减慢服务器速度吗?

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

于 2013-09-04T08:54:36.813 回答