簡體   English   中英

如何對嵌套的哈希圖進行排序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM