[英]How to sort nested hashmaps?
下面的hashmap
圖的形式類似於帶有鍵值對字符串的表。 Integer
分別代表行索引和列索引。
HashMap<Integer,HashMap<Integer,HashMap<String,String>>> fullMap = new HashMap<Integer,HashMap<Integer,HashMap<String,String>>>();
如何排序最里面的hashMap? 按鍵升序排列行
未排序的輸出:
. 0 1 2
0 john,men ace,his hish,opt
1 vrix,alt home,jul ics,ard
排序輸出:
. 0 1 2
0 ace,his john,men hish,opt
1 home,jul ics,ard vrix,alt
我建議您對使用的地圖進行排序,而不要更改數據的存儲方式。
如果我理解您的問題,則希望按鍵值對中的鍵進行排序。 如果正確,則可以執行以下操作:
void processRow(Map<Integer,Map<String,String>> row) {
row.entrySet().stream().sorted(Map.Entry.comparingByKey())
.forEach(entry -> ...);
}
順便說一句,您將數據結構比作表的類比令人困惑。 這是從int到int到從字符串到字符串的映射。 這可以代表一個表格,其中每個單元格都是鍵/值對的列表。 但這是一個非常不尋常的表。
關系表的更常規表示形式將類似於List<Map<Column,Value>>
。
可以使用TreeMap基於鍵對地圖項進行排序。 創建HashMap <Integer,TreeMap <String,String >>以維護列格式。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.