Map基於Value值排序

2021-08-01 21:19:15 字數 808 閱讀 8586

方法1: 使用treemap,可以參考下面的代

public

class

testing

} class

valuecomparator

implements

comparator

// note: this comparator imposes orderings that are inconsistent with equals.

public

intcompare(string

a, string

b) else // returning 0 would merge keys

} }

譯註:如果不自己寫comparator,treemap預設是用key來排序

###方法2:

先通過linkedlist排好序,再放到linkedhashmap中

public

class

maputil

} );

map result =

newlinkedhashmap();

for (map

.entry entry : list)

return result;

} }

譯註:這兩種方法,我簡單測試了下,如果map的size在十萬級別以上,兩者的耗時都是幾百毫秒,第二個方法會快一些。否則,第乙個方法快一些。因此,如果你處理的map,都是幾十萬級別以下的大小,兩種方式隨意使用,看個人喜歡了。

親測,真理

Map的按value值排序

map自帶按key值排序的屬性,但很多種情況下我們需要對map容器進行按vaule值排序,由於map沒有提供相應的api,我們只有自力更生了。可以利用pair和自定義排序函式實現,比如我們拿leetcode上的347題為例,統計一組數中出現次數最多的k個數,如下 自定義的pair比較函式,此函式需要...

Map按照value值排序及踩坑

public static void main string args 使用linkedhashmap可以保留插入順序,倒序則替換p1,p2位置 linkedhashmap resultmap new linkedhashmap map.entryset stream sorted p1,p2 p1...

Map獲取key值和value值

在寫後台的過程中,有時候用到了containskey,用於判斷是否包含key值 獲取方法例項 mapmap new hashmap map.put 1,111 map.put 2,222 map.put 3,333 integer key integer.valueof dataxlist 對於給定...