更改地图的迭代顺序

如何以特定的所需顺序遍历 Map?我目前有一个 HashMap 并希望能够定义特定的迭代顺序。订单应该能够由用户更改。

我的第一个想法是使用 LinkedHashMap,因为它会给我一个条目顺序,但遗憾的是,实现只按插入顺序或访问顺序对它们进行排序。除了使用删除操作插入顺序外,我认为 LinkedHashMap 不适合这项任务。Imo 实现有点不符合文档所说的内容。

我还找到了 SortedMap,但它使用了一个比较器,所以每次我想迭代条目时都需要对其进行评估。这可能是一个解决方案,但有点昂贵:O(n*log(n))。

到目前为止,Andreas 评论似乎是最好的解决方案,它同时具有 HashMap 和 ArrayList。


慕标5832272
浏览 75回答 3
3回答

慕标琳琳

将 LinkedHashMap 转换为 ArrayList,然后切换值。然后转换回 LinkedHashMap。O(n) 的空间和时间复杂度。

杨魅力

这个问题的正确答案是你使用了不正确的数据结构,这样你就不必重新排序了。

PIPIONE

如果您想要一个键值对并且希望它具有 ArrayList 的属性,那么您可以尝试List<Pair<String,&nbsp;String>>&nbsp;?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java