如果一个有序队列 List 中有十个元素,要求确保每天多次取出的元素相同
第二天取有序队列中下一个元素,这样周而复始的循环
请问有没有简洁优雅的设计思路
|      1JasonLaw      2022-12-11 20:15:28 +08:00 via iPhone 如果第二天没有获取操作,第三天获取到的元素是第二个还是第三个? | 
|      3echooo0 OP @JasonLaw #1 我目前想到的方案是 redis 队列 + redis key 设置到期时间 的组合来做,看起来不够优雅简洁 | 
|      4JasonLaw      2022-12-11 21:39:56 +08:00 via iPhone  1 @echooo0 在我看来,这其实就是一个循环链表,只需要记录当前所在的节点 current 就好,节点还会跟日期关联。 如果当前日期和当前节点日期一样,那就返回当前节点,而且不移动当前节点。 如果当前日期和当前节点日期不一样,执行 current = current.next ,然后关联当前节点和当前时间,返回当前节点。 | 
|      5hefish      2022-12-11 21:47:49 +08:00 感觉可以用两个指针来实现。 | 
|  |      6git00ll      2022-12-11 21:54:44 +08:00  1 (当前日期距离 1970-01-01 之间天数只差 -  offset ) %  队列大小,  怎么样 | 
|      7Hurriance      2022-12-12 01:07:20 +08:00 via iPhone 觉得 6 楼的可行 | 
|  |      8wangritian      2022-12-12 01:27:39 +08:00 同 6 楼,第一反应就是用余数,如果后续队列元素数量变化,可以手动修改偏移将当天对齐到变化前 | 
|      9luozic      2022-12-12 05:12:18 +08:00 方案越简洁越好,6 楼的不错 | 
|      10RightHand      2022-12-12 07:20:04 +08:00 via Android linkedHashMap 配合 list 不好吗? | 
|  |      11xuanbg      2022-12-12 08:03:16 +08:00 这不就是个时间轮吗?轮子每天转 1 格,指针永远指向一个位置。 | 
|      13JasonLaw      2022-12-12 08:10:00 +08:00 via iPhone  1 还有一点我想指出,这个需求跟队列没有任何关系,感觉很多人对队列的理解都错得很严重。 来自 Wikipedia: In computer science, a queue is a collection of entities that are maintained in a sequence and can be modified by the addition of entities at one end of the sequence and the removal of entities from the other end of the sequence. | 
|      14tusj      2022-12-13 10:08:03 +08:00 13 楼说得对,这和队列有啥关系?就 n 个固定值,来回取。没有 push ,也没有 pop 啊? | 
|      16JasonLaw      2022-12-13 17:20:24 +08:00 via iPhone @YVAN7123 #15 我后来再看了一下,那个-不是减号,是一个分隔符,offset 是一个描述前面中文的一个变量,我一开始以为是减号。 我一开始就想到这种方法,然后我觉得 op 可能有我在 1 楼描述的需求,所以我排除了数组 offset 这种方法,因为它不满足需求。 | 
|      17JasonLaw      2022-12-13 17:24:01 +08:00 via iPhone @YVAN7123 #15 我上面的 comment 又理解错了,那么要实现 1 楼那种需求,offset 怎么维护? | 
|  |      18YVAN7123      2022-12-13 17:29:49 +08:00 |