java - 如何让Hashmap有序?

标签 java

除了使用 LinkeHashmap 之外,我还可以得到一个键有序的 Hashmap 吗?

        Map<String,String> myMapTmp = XXDao().getXXX();
        Map<String,String> myMap = new LinkedHashMap<String,String>();

        List<String> keyList = new ArrayList<String>();
        Iterator<String> it =myMapTmp.keySet().iterator();
        while(it.hasNext()){
            keyList.add(it.next());
        }
        Collections.sort(keyList);
        Iterator<String> it2 = keyList.iterator();
        while(it2.hasNext()){
            String key = it2.next();
            myMap.put(key, myMapTmp.get(key));
        } 

最佳答案

您可以将 TreeMapHashMap 的映射一起使用

Map<String,String> myMapTmp = XXDao().getXXX();
// TreeMap keeps all entries in sorted order
TreeMap<String, String> sortedMap = new TreeMap<>(myMapTmp);
Set<Entry<String, String>> mappings = sortedMap.entrySet(); 
System.out.println("HashMap after sorting by keys in ascending order "); 
for(Entry<String, String> mapping : mappings){ 
   System.out.println(mapping.getKey() + " ==> " + mapping.getValue()); 
}

关于java - 如何让Hashmap有序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787287/

相关文章:

java - ElasticSearch 抛出 "OutOfMemoryError [unable to create new native thread]"

java - 如何将初始参数传入jsp?

java - 在 JApplet 中正确使用事件调度线程?

java - 无法在 java 中为 .net 中创建的 svc 服务创建 stub

java - A* 如果无法到达某个点则捕获

java - Android 以编程方式设置 View 边距

java - 如何在jsp中动态地将spiltted字符串值传递给文本框

java - 在android中创建菜单/子菜单

java - 原始数据类型引用

java - Apache Velocity - 由于 slf4j 依赖性而无法评估脚本