首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类似于地图的Collections.rotate

类似于地图的Collections.rotate
EN

Stack Overflow用户
提问于 2013-07-11 22:24:12
回答 3查看 1K关注 0票数 0

目前还没有寻找任何代码帮助,只是一些建议。

我正在设计一个调度器,它接受文本文件输入,并为所有球队安排每周的比赛。我已经让它工作了,现在我正在考虑扩展它以保持结果。目前,我把所有的团队都读到了一个列表中。并使用Collections.rotate旋转列表以随机化灯具。

我在考虑使用地图来保存团队和胜利的数量,但是旋转似乎不适用于地图。有没有我遗漏的类似功能,或者我忽略的东西?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-11 22:33:33

您可能不想旋转Map本身,但听起来您想要做的是旋转Map键的视图。

所以在伪代码中,你可以这样做

代码语言:javascript
复制
//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
票数 3
EN

Stack Overflow用户

发布于 2013-07-11 22:31:36

在JDK中有3种主要的、非专门化的Map接口实现:

没有排序的

  • HashMap -这对基于某个比较器排序的you
  • TreeMap没有帮助-可能不容易适应按插入顺序或访问顺序排序的case
  • LinkedHashMap

在您的例子中,您可以使用使用access order的LinkedHashMap (使用a special construtor with the parameter accessOrder set to true创建),并且每次您访问其中一个项时,它将自动重新排序到映射的尾部。完整的迭代周期将保持顺序不变。

票数 2
EN

Stack Overflow用户

发布于 2013-07-11 22:42:56

旋转可能适用于LinkedHashMap,这是如何将地图旋转一个元素的方法

代码语言:javascript
复制
Iterator<Entry> i = m.entrySet().iterator();
Entry e = i.next();
i.remove();
m.put(e.getKey(), e.getValue());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17596003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档