添加了基于顺序值的 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 循环[重复]的主要内容,如果未能解决你的问题,请参考以下文章