尚未寻找任何代码帮助,只是一些建议。
我正在设计一个调度程序,它接受一个文本文件输入并为所有团队安排每周游戏。我有这个工作,现在我正在寻求扩大它以保持结果。目前,我将所有团队都列入了一个清单。并使用Collections.rotate旋转列表以随机化灯具。
我正在考虑使用地图来保持团队和胜利数量,但旋转似乎不适用于地图。是否有类似的功能,我缺少,或者我忽略了什么?
答案 0 :(得分:3)
您不希望旋转地图本身,但听起来您想要做的是旋转地图的键的视图。
因此,在伪代码中,您可以执行类似
的操作//make a copy of the keys of the map
List keys = new ArrayList(yourmap.keys())
Collections.rotate(keys)
//iterate over the keys of the map in the new rotated order
for key in keys:
Object value = yourmap.get(key)
// do something with this value
答案 1 :(得分:2)
JDK中有Map
接口的3个主要的非专用实现:
HashMap
未订购 - 这对您没有帮助TreeMap
- 可能不容易适应您的用例LinkedHashMap
按照广告订单或访问顺序排序在您的情况下,您可以使用LinkedHashMap
使用访问顺序(使用a special construtor with the parameter accessOrder
set to true
创建一个访问顺序),每次访问其中一个项目时,它都会自动重新排序到地图的尾部。完整的迭代周期将保持订单不变。
答案 2 :(得分:2)
旋转可能适用于LinkedHashMap,这是如何通过一个元素旋转地图
Iterator<Entry> i = m.entrySet().iterator();
Entry e = i.next();
i.remove();
m.put(e.getKey(), e.getValue());