需要对地图的字母数字键进行排序

时间:2016-07-01 10:08:37

标签: java

让我们说,我的地图为'visible' => Yii::$app->userinfo->hasRole([AR::ROLE_PRIMARY])

我有以下地图的按键

Map<String, String> data = new HashMap<String, String>();

我需要按以下方式对这些键进行排序:

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

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

你不能使用SortedMap代替HashMap吗?

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

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

这是SortedMap API

答案 1 :(得分:0)

你能试试吗?

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

答案 2 :(得分:0)

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

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

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

如果要根据键的顺序迭代映射,则使用java.util.LinkedHashMap而不是HashMap。但是你必须按照如上所示的显式顺序放置元素。