java - 如何对 HashMap 列表进行排序

标签 java collections

我有一个 ListHashMap 如下所示

ArrayList l = new ArrayList ();
HashMap m = new HashMap ();
m.add("site_code","AL");
m.add("site_name","Apple");
l.add(m);
m = new HashMap();
m.add("site_code","JL");
m.add("site_name","Cat");
l.add(m);
m = new HashMap();
m.add("site_code","PL");
m.add("site_name","Banana");
l.add(m)

我想根据 site_namelist 进行排序。所以最后它会被排序为。

Apple, Banana, Cat

我正在尝试这样的事情:

Collections.sort(l, new Comparator(){
           public int compare(HashMap one, HashMap two) {
              //what goes here?
           }
});

最佳答案

如果你让你的集合通用化,它最终会看起来像这样:

Collections.sort(l, new Comparator<HashMap<String, String>>(){ 
        public int compare(HashMap<String, String> one, HashMap<String, String> two) { 
            return one.get("site_name").compareTo(two.get("site_name"));
        } 
});

如果因为卡在 1.4 或更早的平台上而无法使用泛型,则必须将 get 转换为 String

(此外,作为风格问题,我更愿意将变量声明为 ListMap 而不是 ArrayListHashMap。但这与问题无关。)

关于java - 如何对 HashMap 列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2373009/

相关文章:

java - Tess4J : Invalid memory access

java - 在列表中搜索名称并显示所有匹配项

swift - 数组映射与 Swift 中的 forEach

scala - 在 Scala 中表达单个元素的可迭代最惯用的方式是什么?

ArrayUtils.isNotEmpty 的 Javadoc 有问题吗?

java - System.arraycopy 获取 java.lang.ArrayIndexOutOfBoundsException

java - 如何使用web项目在eclipse中运行小程序

java - 如何使用 CXF 在服务器端启用压缩?

Java Swing : List Models and Collections

java - Java中如何获取ArrayList的容量?