【发布时间】:2014-01-19 17:22:32
【问题描述】:
我正在尝试通过 Websockets 将消息快速发布到我的服务器。对于服务器获取的每条消息,我将其以“时间戳:消息”的形式存储在我的 HashMap 中。我需要 HashMaps 来按时间顺序返回消息的历史记录以及所需的时间戳。 (欢迎任何其他数据结构推荐。)
碰巧当我快速发布消息时,两条或多条消息具有相同的时间戳,因此我无法保存它们。我已经在使用System.currentTimeMillis()。我无法进入纳秒,因为我读取的值是任意的并且通常不可靠。
我尝试在时间戳末尾附加一个静态 AtomicInteger 变量,它可以工作,但是当我将消息返回给我的用户时,我需要返回一个 JSON,但我再次无法存储重复键。
我该如何解决这个问题?
【问题讨论】:
-
抱歉将其移至答案,因为它太长了;)
-
时间戳作为唯一属性本身可能不可靠并且必然会发生冲突
-
@OP 我知道。您的问题并没有明确说明您需要时间戳用于除密钥之外的任何其他目的。请编辑您的问题以解释您的用例。
-
您的系统将值定义为重复,您可以检查消息内容和时间戳的组合是否唯一。如果它失败了,那么你实际上是在产生重复。
-
为什么不使用
currentTimeMillis,附加nanoTime?
标签: java data-structures hashmap duplicates