【问题标题】:Need to sort alphanumeric keys of a map [duplicate]需要对地图的字母数字键进行排序[重复]
【发布时间】:2016-11-03 16:54:41
【问题描述】:

比方说,我有一张 Map<String, String> data = new HashMap<String, String>(); 的地图

我有这张地图的以下键

{benefits7,benefits11,benefits1,benefits10,benefits15};

我需要它来对这些键进行如下排序:

{benefits1,benefits7,benefits10,benefits11,benefits15}

有人可以帮忙吗?

【问题讨论】:

标签: java


【解决方案1】:

你不能用 SortedMap 代替 HashMap 吗?

这样,如果您使用 entrySet 或 KeySet 遍历地图,它将返回按其键排序的值。

默认情况下,它使用密钥类的自然顺序(示例中为字符串),这种行为似乎足以满足您的要求

这里是 SortedMap API

【讨论】:

    【解决方案2】:

    你可以试试这个吗?

    Map<String, String> data = new HashMap<String, String>();
    Set<String> keys = data.keySet();
    Set<String> sortedKeys = Collections.sort(keys);
    

    【讨论】:

      【解决方案3】:

      您可以使用列表对键进行排序。如果你需要在你的地图中有顺序,那么你不应该使用 HashMap,因为它不关心顺序。

      改为使用链接的哈希映射。所以,你可以有一个有序的键列表:

      List<String> keys = new ArrayList<String>(data.keySet());
      Collections.sort(keys);
      

      如果您想根据键的顺序迭代映射,请使用 java.util.LinkedHashMap,而不是 HashMap。但是您必须按照上面显示的明确顺序放置元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-04
        • 2018-02-19
        • 1970-01-01
        • 2018-11-02
        • 2021-10-10
        • 1970-01-01
        相关资源
        最近更新 更多