我提出了一个非常大胆的想法.那就是我想用一个HashMap
而不是数据库来存储聊天应用程序的数据.
因此,当用户发送聊天消息时,该特定用户的聊天消息将被存储到HashMap
使用中storeMsg()
.
每个用户都有一个单独的聊天室.每隔5秒,该特定用户的聊天室将发送一种getMsg()
方法来检索该聊天室内的最新消息.在检索消息之后,它将删除与该特定用户的聊天室相关的所有消息,以便我们可以避免开销.
因此,只有用户存在于聊天室中才能看到消息,消息可以一个一个地添加.最近进入该聊天室的新用户将无法看到之前的消息.这类似于点对点聊天.
每个用户都有一个唯一的字符串用户名,例如"tomhan12","Mary2","123cat"等.
public void storeMsg(String userName, String message){ hMap.put(userName, message); } public String getMsg(String userName){ return hMap.get(userName); }
所以,我的问题是,如果hMap
有Key
S中的String
S&如果hMap
有一个像数以百万计的条目,然后将速度的hMap.get(str)
影响吗?
我们可以将其String userName
转换为唯一的整数然后" hMap.put(thatUniqueIntegerNumber, message)
"以获得更高的性能吗?或者HashMap为我们做了这个,所以我们不需要这样做?
HashMap
的get
具有期望的恒定运行时间,这意味着它的运行时间不应该依赖于的大小HashMap
.当然,这取决于hashCode
你的密钥方法的正确实现,但你的关键是String
,所以它应该不是问题.
也就是说,使用大型HashMap
(或任何其他大型数据结构)会消耗大量内存,因此您应该注意,您没有遇到内存不足的问题,这会降低您的应用程序速度.