重复的毫秒时间戳问题

时间:2014-01-19 17:22:32

标签: java data-structures hashmap duplicates

我正在尝试通过Websockets快速将消息发布到我的服务器。对于服务器获取的每条消息,我将其以“timestamp:message”的形式存储在我的HashMap中。我需要HashMaps按时间顺序返回消息的历史记录,并带有所需的时间戳。 (欢迎任何其他数据结构建议。)

碰巧当我快速发布消息时,两条或更多条消息具有相同的时间戳,因此我无法保存它们。我已经在使用System.currentTimeMillis()了。我不能进入纳秒是我读到的值是任意的,往往是不可靠的。

我尝试在时间戳的末尾附加一个静态AtomicInteger变量并且它可以工作但是,当我将消息返回给我的用户时,我需要返回一个JSON并且我再次无法存储重复键。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你需要一个绝对的时间戳吗?也许一个计数器 - 即知道ab之前到达 - 就足够了,有一个计数器,当你收到一条消息并将其用作你的'时间戳'时,你会增加一个计数器。没有更多重复,时间顺序仍然完整。

此外,如果您不坚持使用地图,您也可以使用FIFO队列。这也将按时间顺序排列。