我正在尝试通过Websockets快速将消息发布到我的服务器。对于服务器获取的每条消息,我将其以“timestamp:message”的形式存储在我的HashMap中。我需要HashMaps按时间顺序返回消息的历史记录,并带有所需的时间戳。 (欢迎任何其他数据结构建议。)
碰巧当我快速发布消息时,两条或更多条消息具有相同的时间戳,因此我无法保存它们。我已经在使用System.currentTimeMillis()
了。我不能进入纳秒是我读到的值是任意的,往往是不可靠的。
我尝试在时间戳的末尾附加一个静态AtomicInteger
变量并且它可以工作但是,当我将消息返回给我的用户时,我需要返回一个JSON并且我再次无法存储重复键。
我该如何解决这个问题?
答案 0 :(得分:1)
你需要一个绝对的时间戳吗?也许一个计数器 - 即知道a
在b
之前到达 - 就足够了,有一个计数器,当你收到一条消息并将其用作你的'时间戳'时,你会增加一个计数器。没有更多重复,时间顺序仍然完整。
此外,如果您不坚持使用地图,您也可以使用FIFO队列。这也将按时间顺序排列。