【问题标题】:Looping over HashMap based on order values were added [duplicate]添加了基于顺序值的 HashMap 循环[重复]
【发布时间】: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 维护顺序

标签: java data-structures iterator hashmap


【解决方案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));
            }
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多