java - 重复的毫秒时间戳问题

标签 java data-structures hashmap duplicates

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

碰巧我在快速发布消息时,两条或多条消息的时间戳相同,无法保存。我已经在使用 System.currentTimeMillis()。我无法进入纳秒,因为我读到的值是任意的并且通常不可靠。

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

我该如何解决这个问题?

最佳答案

你需要一个绝对时间戳吗?也许一个计数器 - 即知道 ab 之前到达 - 就足够了,有一个计数器,当消息到达时递增并将其用作你的“时间戳”。不再重复,时间顺序仍然完整。

此外,如果您不坚持要有 map ,也可以只使用 FIFO 队列。这也将保持时间顺序。

关于java - 重复的毫秒时间戳问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21220024/

相关文章:

java - 如果锁本身被争用会怎样?

java - 如何使用java创建远程桌面访问应用程序?

php - 有没有一种优雅的方法可以将结构简化为简单数组?

python - Python 如何在内部存储列表?

java - arraylist 的线程安全实现

java - Mapstruct映射: Return null object if all source parameters properties are null

ios - 如何将数据源传递给第二个 View Controller ? swift

java - 从 hashmap 打印一个值到屏幕 - 一次打印多个值?

java - 使用 lambda 表达式创建嵌套 hashmap

java - 内置的短方法来获取按 Java 中的值排序的 Hashmap 键数组