【发布时间】:2020-04-22 03:40:55
【问题描述】:
我有一个嵌套地图
Map<String, HashMap<String, Integer>> map = new TreeMap<String, HashMap<String, Integer>>();
另外,我有深度地图
HashMap<String, Integer> deep_map = new HashMap<String, Integer>();
我从 txt 文件中读取行并放入嵌套地图中,如下所示
try {
FileInputStream fstream = new FileInputStream("file.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
String[] tokens = strLine.split(" ");
deep_map.put(tokens[1], Integer.parseInt(tokens[2]));
map.put(tokens[0], deep_map);
}
in.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
txt 文件的内容如
John AA 80
Adam BB 60
Natalie BB 65
name是map的key,grade是嵌套map的key,score是嵌套map的value。 那么,如何按分数降序对它们进行排序?
【问题讨论】:
-
到目前为止你有什么尝试?
-
我建议熟悉 Streams
-
我尝试了 Collection.sort 和 compareTo 但我无法为嵌套地图配置它们。
-
不相关:阅读 java 命名约定...使用 deepMap 并避免使用 "_" 。或者甚至更好:使用一个可以告诉读者在该地图中找到什么的名称。它是一个映射的事实可以在 IDE 中很容易地计算出来。那么,为什么不将其称为 namesById 或其他名称(告诉读者键是什么,值是什么)。
标签: java sorting hashmap linkedhashmap nested-map