如何对hashmap进行排序

use*_*349 -1 java hashmap

我有这个hashmap:

       HashMap<String, ArrayList<String>> allhotels = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

我想按字母顺序对每个Arraylist中的所有值进行排序.这是我目前的方法:

public void sortHotels() {

    for(int i = 0; i < allhotels.size(); i++) {

        Collections.sort(allhotels.values().toArray(), String.CASE_INSENSITIVE_ORDER);
    }

}
Run Code Online (Sandbox Code Playgroud)

我想在ArrayList中为hashmap中的每个条目排序字符串.

JB *_*zet 6

您没有对地图中包含的列表进行排序.您将地图中的所有列表作为包含列表的数组获取,并尝试使用用于对字符串进行排序的比较器对此列表数组进行排序.

你想要的是对地图的每个值进行排序.因此迭代值,并对它们进行排序:

for (List<String> list : allhotels.values()) {
    Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
}
Run Code Online (Sandbox Code Playgroud)