如何排序hashmap?

use*_*384 -2 java hashmap

我有hashmap,其键如"folder/1.txt,folder/2.txt,folder/3.txt",值包含这些文本文件数据.

现在我被困了.我想对此列表进行排序.但它不允许我这样做:(这是我的hashmap数据类型:

HashMap<String, ArrayList<String>> 
Run Code Online (Sandbox Code Playgroud)

以下函数工作正常但是arraylist不适用于hashmap.

Collections.sort(values, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)

我也尝试了MapTree,但它也没有用,或者可能是我无法使它工作.我使用以下步骤使用maptree对代码进行排序

HashMap testMap = new HashMap();
Map sortedMap = new TreeMap(testMap);
Run Code Online (Sandbox Code Playgroud)

还有其他办法吗?

我有一个疑问,因为我的密钥是(文件夹/ 1.txt,文件夹/ 2.txt)可能是这个原因?

Chi*_*Uni 10

我想你想要按键列表排序.

如果调用了hashmap h,那么试试这个:

SortedSet<String> sortedKeys = new TreeSet<String>(h.keySet());
Run Code Online (Sandbox Code Playgroud)

  • (-1)你不能新的SortedSet(),它是一个接口.应该像sortedKeys = new TreeSet <String>(h.keySet()); (3认同)

Kal*_*see 5

为什么不这样做呢?

Map<String, ValueObject> testMap = new TreeMap<String, ValueObject>();
Run Code Online (Sandbox Code Playgroud)

ValueObject你用于价值观的任何类别在哪里.

编辑:这是基于一些假设 - 等待获取更多信息,以了解OP真正需要什么.