Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对哈希表列表进行排序

如何对哈希表列表进行排序
EN

Stack Overflow用户
提问于 2010-03-03 16:28:30
回答 3查看 8K关注 0票数 4

我的HashMapList如下所示

代码语言:javascript
运行
AI代码解释
复制
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进行排序。所以最终它会被排序为。

代码语言:javascript
运行
AI代码解释
复制
Apple, Banana, Cat

我试着这样做:

代码语言:javascript
运行
AI代码解释
复制
Collections.sort(l, new Comparator(){
           public int compare(HashMap one, HashMap two) {
              //what goes here?
           }
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-03 16:31:33

如果你让你的集合泛型,它最终会是这样的:

代码语言:javascript
运行
AI代码解释
复制
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。但这与问题无关。)

票数 14
EN

Stack Overflow用户

发布于 2010-03-03 16:40:00

我认为现在是考虑重新设计的好时机。从您的示例中,看起来您的所有对象都有两个相同的字段- site_namesite_code。在这种情况下,为什么不定义自己的类而使用HashMap

代码语言:javascript
运行
AI代码解释
复制
public class Site implements Comparable<Site> {
    private String site_name;
    private String site_code;

    // getters and setters, equals, and hashCode

    public int compareTo(Site other) {
        return this.site_name.compareTo(other.getSiteName);
    }
}

然后你就可以使用Collections.sort()了。

票数 9
EN

Stack Overflow用户

发布于 2010-03-03 16:31:45

类似于:

代码语言:javascript
运行
AI代码解释
复制
String codeOne = (String)one.get("site_code");
String codeTwo = (String)two.get("site_code");

return codeOne.compareTo(codeTwo);

我还没有编译或测试它,但它应该是这样的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2373009

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档