11

我有这样的地图:

Map<Integer, MyEntry> map = new HashMap<Integer, MyEntry>();

我的条目是:

public class MyEntry {
    private String title;
    private String value;

    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}

将值放入 map 后,我想对其进行排序。第一个元素最小,最后一个元素最大。

4

3 回答 3

18

对于按键排序,您可以使用SortedMap- 一个常见的实现是TreeMap. 由于整数有一个自然的排序顺序,你不需要做任何特别的事情,只需将它们放入TreeMap

如果您想按值排序,此问题中描述了几种技术Sort a Map<Key, Value> by values (Java)

于 2013-08-25T17:15:58.370 回答
9

如果要排序,可以使用 2 种LinkedHashMap或最常用的是TreeaMap

Map<Integer, MyEntry> map = new LinkedHashMap<Integer, MyEntry>();

或者

Map<Integer, MyEntry> map = new TreeMap<Integer, MyEntry>();

并添加一些小样本,您可以使用以下代码:

Map<Integer, String> map = new TreeMap<Integer, String>();
map.put(1, "one");
map.put(3, "three");
map.put(2, "two"); 
// prints one two three   
for(Integer key : map.keySet()) {
   System.out.println(map.get(key);
}

一些有用的:

使用 TreeMap 示例进行排序

另一个有用的排序示例

干杯,

于 2013-08-25T17:18:20.787 回答
3

AHashMap不保证您排序后的顺序map。如果要按 对地图进行排序keys,请使用TreeMap

这可能会有所帮助:Order HashMap<String,Integer> based on Integer

于 2013-08-25T17:17:45.493 回答