【问题标题】:How can I sort a map with string key? like (1 foo , 2 foo)如何使用字符串键对地图进行排序?像 (1 foo , 2 foo)
【发布时间】:2018-12-13 16:09:02
【问题描述】:

'我正在使用休眠,我打算使用LinkedHashMap 对元素进行排序, 但它不起作用,因为我无法像那样初始化,所以我从控制器进行排序,所以它有效,但不是那么好,这是我的排序方法。

public LinkedHashMap<String, Indicador> OrdenarMap(Map<String, Indicador> map) {

        LinkedHashMap<String, Indicador> sortedMap = new LinkedHashMap<>();

        map.entrySet()
                .stream()
                .sorted(Map.Entry.comparingByKey())
                .forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));

        return sortedMap;
    }

我想要这样的订单

{1 Objetivo General, 1.1 Objetivo Especifico, 2 总体目标} 等等……

【问题讨论】:

  • 对版本字符串使用比较器,而不仅仅是Map.Entry.comparingByKey()。例如看这个问题:stackoverflow.com/questions/6701948/…
  • @TheDonLUIS1:您尝试排序的实际键是什么? (请将它们放在问题的文本中,而不是作为文本图像。)你得到什么顺序,你想得到什么顺序?我认为 Alex Shesterov 走在正确的轨道上,实际上您可能正在获得“正确”排序的输出,但您只需要 不同的 顺序 - 这意味着您可能想要写一个Comparator,表达你想要的顺序。
  • 我的键是 {1 Objetivo General, 2 Objetivo General, 3 Objetivo General, 1.1 Objetivo Especifico, .........N Objetivo General } 所以排序是这样的,{ 1 Objetivo General, 10 Objetivo General, 11 Objetivo ...................2 Objetivo General},我想要的顺序是这个{1 Objetivo General, 1.1 Objetivo, 1.2, 2, 2.2, 2.3, 3。 ..} 等等。感谢您的宝贵时间

标签: java sorting dictionary


【解决方案1】:

使用 TreeMap 和自定义 Comparator

默认情况下,字符串比较器按字典顺序比较字符串,这就是您看到类似{"1", "10", "11", ..., "2", "20"} 的顺序的原因。

因为我假设你的密钥总是双倍的,所以这个比较器应该可以工作:

TreeMap<String, Indicador> sortedMap = new TreeMap<>(new Comparator<String>() {
    public int compare(String string1, String string2) {
        return Double.parseDouble(string1) - Double.parseDouble(string2) < 0.0 ? -1 : 1;
    }
});

【讨论】:

  • 谢谢,很有用
【解决方案2】:

看看TreeMap。它按键的自然顺序排序

基于红黑树的 NavigableMap 实现。地图已排序 根据其键的自然顺序,或通过比较器 在地图创建时提供,具体取决于使用的构造函数。

https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html

构造函数还可以为键接受比较器来进行自己的排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多