目前还没有寻找任何代码帮助,只是一些建议。
我正在设计一个调度程序,它接受文本文件输入并为所有团队安排每周比赛。我有这个工作,现在我正在考虑扩展它以保持结果。此刻,我将所有团队读入一个列表。并使用 Collections.rotate 旋转列表以随机化灯具。
我正在考虑使用地图来保持团队和获胜次数,但是轮换似乎不适用于地图。是否有我遗漏的类似功能,或者我忽略了某些功能?
您不想旋转 Map 本身,但听起来您想要做的是旋转 Map 的keys的视图。
所以在伪代码中,你可以做类似的事情
//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
Map
JDK 中有 3 个主要的、非专门的接口实现:
HashMap
没有订购 - 这对您没有帮助TreeMap
根据一些比较器排序 - 可能不容易适应您的用例LinkedHashMap
按插入顺序或访问顺序排序在您的情况下,您可以使用LinkedHashMap
使用访问顺序(您使用参数设置为的特殊构造accessOrder
true
器创建一个),并且每次访问其中一个项目时,它都会自动重新排序到地图的尾部。一个完整的迭代周期将保持顺序不变。
Rotate 可能适用于 LinkedHashMap,这是将地图旋转一个元素的方法
Iterator<Entry> i = m.entrySet().iterator();
Entry e = i.next();
i.remove();
m.put(e.getKey(), e.getValue());