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