让我们说,我的地图为'visible' => Yii::$app->userinfo->hasRole([AR::ROLE_PRIMARY])
我有以下地图的按键
Map<String, String> data = new HashMap<String, String>();
我需要按以下方式对这些键进行排序:
{benefits7,benefits11,benefits1,benefits10,benefits15};
有人可以帮忙吗?
答案 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。但是你必须按照如上所示的显式顺序放置元素。