首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java7中整理List<Map>

在Java7中整理List<Map>
EN

Stack Overflow用户
提问于 2015-12-18 02:44:20
回答 4查看 107关注 0票数 0

我有一个类型为List<Map<String, String>>的数据结构,我希望根据值对列表中的所有Map值进行排序。例如,列表在迭代时会给出一个Map,它由两个键值对组成。

代码语言:javascript
运行
复制
Map1--> Key1:  abc and key2: Sometext2
Map2 --> Key1: cbd and key2: Sometext2
Map3 --> Key1: bcd and key2: Sometext2
.
.
.
.

诸若此类。我希望按照映射到key1的值按字母顺序对数据结构进行排序,因此它应该如下所示:

代码语言:javascript
运行
复制
Map1--> Key1:  abc and key2:Sometext2.
Map3 --> Key1: bcd and key2: Sometext2
Map2 --> Key1: cbd and key2: Sometext2
.
.
.
.

我使用的是Java7,如有任何帮助,我将不胜感激。

谢谢

EN

回答 4

Stack Overflow用户

发布于 2015-12-18 02:52:43

根据您的示例,您的Map只是一对(String, String)

所以我们可以这样做:

代码语言:javascript
运行
复制
public class MyCouple {
    private String first;
    private String second;
    // + constructors, getters, setters
}

List<MyCouple> couples = // ...
Collections.sort(couples, new Comparator<MyCouple>(){
    @Override
    public int compare(MyCouple c1, MyCouple c2) {
        return c1.getSecond().compareTo(c2.getSecond()); // sort by second
    }
});
票数 0
EN

Stack Overflow用户

发布于 2015-12-18 02:55:04

您可以对map使用包装类,然后获取列表的迭代器。如下所示:

代码语言:javascript
运行
复制
class MapWrapper implements Comparable<Map> {
    private Map<String, String> map;

    public MapWrapper (Map<String, String> map) {
        this.map = map;
    }

    public int compareTo() {
        do stuff
    }
}
票数 0
EN

Stack Overflow用户

发布于 2015-12-18 02:55:29

我也有类似的需求,我开发了一个类似的地图。类声明是:

代码语言:javascript
运行
复制
public class ComparableMap<K,V> extends TreeMap<K,V> implements Comparable<ComparableMap<K,V>> {
    @Override
    public int compareTo(ComparableMap<K,V> o) {...}
}

由于TreeMap迭代器返回排序后的键,因此要比较两个映射,您需要遍历键,比较每个键,直到两个键不相等,或者对于相等的键,值不相等,返回适当的结果,具体取决于哪个更小。当到达一个键集的末尾时,如果其他键集有键,那么它们也是不相等的,您应该返回适当的比较结果。

最后,您可以使用Collections.sort()对映射列表进行排序,因为将使用compareTo方法来确定排序顺序。

希望这篇文章能给你一些启发。

如果您希望对所有映射中的各个键进行排序,则可能需要生成一个合并的映射。

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

https://stackoverflow.com/questions/34342000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档