下面的Integer
形成类似于具有键值对字符串的表格。 HashMap<Integer,HashMap<Integer,HashMap<String,String>>> fullMap = new HashMap<Integer,HashMap<Integer,HashMap<String,String>>>();
分别代表行和列索引。
. 0 1 2
0 john,men ace,his hish,opt
1 vrix,alt home,jul ics,ard
如何对最里面的hashMap进行排序?按键升序排序
未排序的输出:
. 0 1 2
0 ace,his john,men hish,opt
1 home,jul ics,ard vrix,alt
已排序的输出:
RewriteEngine on
# To externally redirect /dir/foo.php to /dir/file.html
RewriteCond %{THE_REQUEST} \s/+(.+)\.php[\s?] [NC]
RewriteRule ^ /%1.html [R=301,L]
# To internally rewrite /dir/file.html to /dir/file.php
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(.+)\.html$ $1.php [L]
答案 0 :(得分:3)
我建议您在使用时对地图进行排序,而不是更改数据的存储方式。
如果我理解您的问题,您希望按键值对中的键进行排序。如果这是正确的,那么你可以这样做:
void processRow(Map<Integer,Map<String,String>> row) {
row.entrySet().stream().sorted(Map.Entry.comparingByKey())
.forEach(entry -> ...);
}
顺便说一句,您将数据结构类比为表格令人困惑。它是从int到int到string到string的映射。这可以表示一个表,其中每个单元格是键/值对的列表。但这是一个非常不寻常的表格。
关系表的更常规表示形式类似于List<Map<Column,Value>>
。
答案 1 :(得分:2)
使用TreeMap可以实现基于键的地图条目排序。创建HashMap&lt;整数,TreeMap的&LT;字符串,字符串&gt;&gt;保持列格式。
Map<Integer, Map<String,String>> map = new HashMap<>();
Map<String, String> treeMap1 = new TreeMap<>();
treeMap1.put("john","men");
treeMap1.put("ace","his");
treeMap1.put("hish", "opt");
Map<String, String> treeMap2 = new TreeMap<>();
treeMap2.put("vrix","alt");
treeMap2.put("home","jul");
treeMap2.put("ics", "ard");
map.put(1, treeMap1);
map.put(2, treeMap2);