更改地图的迭代顺序

时间:2019-06-02 19:35:13

标签: java dictionary iteration linkedhashmap

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

我的第一个想法是使用LinkedHashMap,因为那样会给我一个条目的顺序,但是遗憾的是,该实现只按插入顺序或访问顺序对它们进行排序。除了用删除操作插入顺序外,我看不到LinkedHashMap适合该任务。 Imo的实现方式与文档中所说的相去甚远。

我还找到了SortedMap,但是它使用了一个比较器,因此每次我要遍历条目时都需要进行评估。这可能是一个解决方案,但很昂贵:O(n * log(n))。

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

此问题的正确答案是您使用了不正确的数据结构,因此必须重新排序。

答案 2 :(得分:0)

如果您想要一个键值对,并且希望它具有ArrayList的属性,那么您可以尝试

List<Pair<String, String>> ?