添加了基于顺序值的 HashMap 循环[重复]

Posted

技术标签:

【中文标题】添加了基于顺序值的 HashMap 循环[重复]【英文标题】:Looping over HashMap based on order values were added [duplicate] 【发布时间】:2015-02-23 13:24:04 【问题描述】:

我需要遍历已创建的 hashmap 以创建新的 hashmap 并向其中添加一个整数。

现在我正在使用迭代器,但它似乎没有特定的顺序迭代

所以如果我把这些数据放在我的地图中

map.put(one, alpha)
map.put(two, delta)
map.put(three, gamma)

然后我根据顺序对其进行迭代 我的新哈希图将具有:

key: one value: 1
key: two value: 2
key: three value: 3

现在当我尝试运行它时,结果如下:

key: two value: 1
key: one value: 2
key: three value: 3

【问题讨论】:

见。 HashMap 不维护插入顺序,所以你需要一个LinkedHashMap 维护顺序 【参考方案1】:

如果您希望按照添加到 Map 的顺序遍历键,请使用 LinkedHashMap。

如果您希望按字母顺序遍历键,请使用 TreeMap。

如果您希望以自己定义的任意顺序遍历键,请使用带有提供的比较器的 TreeMap。

【讨论】:

【参考方案2】:

您需要根据需要按键或值对它们进行排序。下面的示例将按键对它们进行排序。

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Main 

    public static void main(String[] args) 
        Map<String, String> map = new HashMap<String, String>();

        map.put("1", "alpha");
        map.put("3", "gamma");
        map.put("2", "delta");


        List<String> list = new ArrayList(map.keySet());
        Collections.sort(list);

        for (String s:list)
            System.out.println(map.get(s));
        

    


【讨论】:

以上是关于添加了基于顺序值的 HashMap 循环[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java集合系列-HashMap 1.8

Java HashMap 按键插入时间排序 - 创意顺序 [重复]

从 HashMap 中检索的值的顺序是插入顺序吗

HashMap弄乱了自己元素的顺序[重复]

JDK源码之HashMap的实现

HashMap与TreeMap