我有一個型別的地圖
static Map<String, ArrayList<String>> Container = new HashMap<String, ArrayList<String>>();
值陣列串列有兩個元素,第一個索引是擴展,第二個是大小,
Container : {
C:\HTML\viewer\files\output\ViewerJS\commons-io-2.11.0-src (2).zip=[zip, 919362],
C:\HTML\viewer\files\jar_files (2).zip=[zip, 345068],
C:\HTML\viewer\files\output\ViewerJS\rar1.rar=[rar, 1],
C:\HTML\viewer\files\output\files.zip=[zip, 10184010],
C:\HTML\viewer\files\check2.zip=[zip, 1]
}
我希望地圖根據地圖值的索引 1 中的數字按降序排序,該數字也是STRING型別的大小。
一點幫助將不勝感激,謝謝。
uj5u.com熱心網友回復:
TreeMap可以按鍵排序,并LinkedHashMap保持插入順序。
最有可能的是,您只需按所需順序對地圖內容的輸出進行排序,這可以使用簡單的Comparator.comparingand來實作Comparator.reverseOrder():
Container.entrySet()
.stream()
.sorted(Comparator.comparing(
e -> Long.parseLong(e.getValue().get(1)), Comparator.reverseOrder()
))
.forEach(System.out::println);
輸出:
C:\HTML\viewer\files\output\files.zip=[zip, 10184010]
C:\HTML\viewer\files\output\ViewerJS\commons-io-2.11.0-src (2).zip=[zip, 919362]
C:\HTML\viewer\files\jar_files (2).zip=[zip, 345068]
C:\HTML\viewer\files\check2.zip=[zip, 1]
C:\HTML\viewer\files\output\ViewerJS\rar1.rar=[rar, 1]
或者可以將排序的結果重新收集到一個LinkedHashMap(使用示例Map.Entry.comparingByValue)中:
Container = Container.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.comparing(
arr -> Long.parseLong(arr.get(1)), Comparator.reverseOrder()
)))
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(a, b) -> a,
LinkedHashMap::new
));
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/431385.html
上一篇:帶有wwwSSL系結錯誤的子域:嘗試為AzureWebApp添加SSL系結時沒有證書
下一篇:文本匹配的啟發式排序
