现在我在项目中的职责是访问计数模块。 如果用户重复登录两小时,则应将其视为一次。
我使用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会降低服务器的速度吗?
真的很抱歉我的英语不好!
答案 0 :(得分:1)
如果地图的大小超过10000,那么loginTimeMap会降低服务器的速度吗?
HashMap
的时间复杂度为O(1)
。也就是说,它散列,然后直接达到价值。它不会搜索该值。这意味着它的性能与数组中的元素数量不成比例,尽管有10,000个条目,它可能会有点内存!