map自定義排序,根據鍵或者值排隊
核心比較器
比較器之根據鍵排序
package cn.com.hongyitech.accountsystem.utils;
import java.util.Comparator;
class MapKeyComparator implements Comparator<String>{
@Override
public int compare(String key1, String key2) {
return key1.compareTo(key2);
}
}
比較器之根據值排序
package cn.com.hongyitech.accountsystem.utils;
import java.util.Comparator;
import java.util.Map;
import java.util.Map.Entry;
class MapValueComparator implements Comparator<Map.Entry<String, String>> {
@Override
public int compare(Entry<String, String> map1, Entry<String, String> map2) {
return map1.getValue().compareTo(map2.getValue());
}
}
根據鍵排序
/**
* 使用 Map按key進行排序
*
* @param map
* @return
*/
public static Map<String, String> sortMapByKey(Map<String, String> map) {
if (map == null || map.isEmpty()) {
return null;
}
Map<String, String> sortMap = new TreeMap<String, String>(new MapKeyComparator());
sortMap.putAll(map);
return sortMap;
}
根據值排序
/**
* 使用 Map按value進行排序
*
* @param map
* @return
*/
public static Map<String, String> sortMapByValue(Map<String, String> oriMap) {
if (oriMap == null || oriMap.isEmpty()) {
return null;
}
Map<String, String> sortedMap = new LinkedHashMap<String, String>();
List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(oriMap.entrySet());
Collections.sort(entryList, new MapValueComparator());
Iterator<Map.Entry<String, String>> iter = entryList.iterator();
Map.Entry<String, String> tmpEntry = null;
while (iter.hasNext()) {
tmpEntry = iter.next();
sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
}
return sortedMap;
}
測試用例
public static void main(String[] args) {
Map<String, String> map = new TreeMap<String, String>();
map.put("2018-12-06", "1");
map.put("2018-12-03", "2");
map.put("2018-12-07", "4");
map.put("2018-12-04", "2");
map.put("2018-12-01", "3");
Map<String, String> resultMapByKey = sortMapByKey(map); // 按Key進行排序
Map<String, String> resultMapByValue = sortMapByValue(map); // 按Value進行排序
for (Map.Entry<String, String> entry : resultMapByKey.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
System.out.println("******上面根據key*********************下面根據value********");
for (Map.Entry<String, String> entry : resultMapByValue.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
結果
2018-12-01 3
2018-12-03 2
2018-12-04 2
2018-12-06 1
2018-12-07 4
******上面根據key*********************下面根據value********
2018-12-06 1
2018-12-03 2
2018-12-04 2
2018-12-01 3
2018-12-07 4
相關文章
- JavaScript 根據物件鍵值進行排序JavaScript物件排序
- 二維陣列根據鍵的值進行排序陣列排序
- python根據字典內的值實現排序Python排序
- JAVA裡List集合中的物件根據物件的某個屬性值降序或者升序排序Java物件排序
- nginx自定義負載均衡及根據cpu執行自定義負載均衡Nginx負載
- List根據時間排序排序
- js根據時間排序JS排序
- 根據登錄檔鍵值判斷本機EXCEL版本Excel
- Oracle 中,根據狀態欄位進行自定義排序例(待驗證、待維修、重新維修)Oracle排序
- 根據關鍵詞取商品列表API返回值說明API
- MySQL自定義排序MySql排序
- Python自定義排序Python排序
- Java 之 Map 的鍵,值多重排序問題解決方案Java排序
- 自定義Map集合,將重複的鍵值對不進行覆蓋而是進行疊加
- 拼多多根據關鍵詞取商品列表 API 返回值說API
- PHP 如何根據鍵值刪除一個陣列中的元素PHP陣列
- 根據key集合批次從map中獲取value
- php 陣列根據元素從小到大排序PHP陣列排序
- Java : List中 根據map的某個key去重Java
- 根據陣列的值刪除元素陣列
- pandas列值根據字典批量替換
- 蝦皮API介面根據關鍵詞取商品列表(商品詳情,庫存,排序,價格...)返回值及說明API排序
- js:陣列自定義排序JS陣列排序
- Java 對映 自定義排序Java排序
- Java 列表元素自定義排序Java排序
- 自定義限速功能實踐——Map 版本
- android自定義view(自定義數字鍵盤)AndroidView
- 二維陣列根據欄位進行排序陣列排序
- Laravel 根據 relation sum 結果排序的小技巧Laravel排序
- 二維陣列根據某個欄位排序陣列排序
- update 修改資料時,依賴或者說需要根據另一個值來進行判斷l
- 改造 Kubernetes 自定義排程器
- vue自定義鍵盤Vue
- 自定義Android鍵盤Android
- 自定義鍵盤(二)
- 自定義鍵盤(一)
- word自定義快捷鍵
- vscode 自定義快捷鍵VSCode