在流水的業務中,碼出最優雅的**。
描述:有若干個鍵值對格式的json字串,根據其中的value進排序,取出其中的排位靠前的一半以上的key值,json資料為:,這是業務上的乙個需求,於是針對這個需求就有了對map的排序一系列探索
前言:對於json轉map本篇就不介紹,直接從對map
的排序開始,其他型別可自行替換
public
static
void main(string args) ;
});for (entryentry : list)
}
有時候我們會想,把這個方法提煉出來,放在乙個工具類中,如是我們將會這樣做:
public static list
<
string
> sortmapbyvalue(map
<
string, integer
>
map);
});
list
<
string
> keys =
new arraylist<
string
>(size);
for (entry<
string, integer
> entry : list)
return keys;
} public static void main(string
args)
}
看起來好像有點複雜,而且實現comparator介面的比較器好像可以抽離出來,其他地方也可以復用,於是:
public static list
<
string
> sortmapbyvalue(map
<
string, integer
>
map)
return keys;
}private static class valuecomparator implements comparator<
map.entry<
string, integer
>>
}public static void main(string
args)
}
好像這樣看起來簡潔多了,而且還多了乙個可復用的東西,但是,這樣在jdk1.8中還遠遠不夠。
public static list
<
string
> sortmapbyvalue(map
<
string, integer
>
map)
public static void main(string
args)
驚不驚喜,意不意外。 根據value欄位對map進行排序
一般來說,我們通常都是通過map中的key欄位進行排序,步驟如下 treemapmap new treemap new comparator 直接新增比較器 public int compare string o1,string o2 但是卻沒有直接的方法能夠進行value排序 1.提取檢視 2.變...
Map 重寫比較器根據 value 排序
根據key進行排序 map 的根據 key 排序需要用到 treemap 物件,因為它是預設按照公升序進行輸出的,可以使用比較器 compareto 對它進行降序排序,comparator 可以對集合物件或者陣列進行排序的比較器介面,實現該介面的 public compare t o1,to2 方法...
map 對key 或 value排序
按key排序 我們借助map提供的引數介面,為它指定相應compare類,就可以實現對map按key排序,是在建立map並不斷的向其中新增元素的過程中就會完成排序。該如何實現map的按value排序呢?第一反應是利用stl中提供的sort演算法實現,這個想法是好的,不幸的是,sort演算法有個限制,...