Map 重寫比較器根據 value 排序

2021-09-26 09:23:14 字數 1465 閱讀 4344

根據key進行排序

map 的根據 key 排序需要用到 treemap 物件,因為它是預設按照公升序進行輸出的,可以使用比較器 compareto 對它進行降序排序,comparator 可以對集合物件或者陣列進行排序的比較器介面,實現該介面的 public compare(t o1,to2) 方法即可實現排序,該方法主要是根據第乙個引數o1,小於、等於或者大於o2分別返回負整數、0或者正整數,若是按照公升序可以直接省略比較器** maptreemap = new treemap();

//預設公升序排列

maptreemap = new treemap<>();

treemap.put("c", "ccccc");

treemap.put("a", "aaaaa");

treemap.put("b", "bbbbb");

treemap.put("d", "ddddd");

system.out.println(treemap);

//重寫比較器之後實現降序排列

maptreemap1 = new treemap(new comparator()

});treemap1.put("c", "ccccc");

treemap1.put("a", "aaaaa");

treemap1.put("b", "bbbbb");

treemap1.put("d", "ddddd");

system.out.println(treemap1);

根據value排序

對 value 排序我們就需要借助於 collections的sort(listlist, comparator<? super t> c) 方法,該方法根據指定比較器產生的順序對指定列表進行排序。但是有乙個前提條件,那就是所有的元素都必須能夠根據所提供的比較器來進行比較。

這種方法通用於 key 和 value 排序,只需將比較器中 o1.getvalue().compareto(o2.getvalue())的getvalue() 改為 getkey() 即可。

maptreemap3 = new treemap<>();

treemap3.put("c", "11111");

treemap3.put("a", "22222");

treemap3.put("b", "33333");

treemap3.put("d", "44444");

//重寫比較器之後實現根據map的value值進行排序

list> list = new arraylist<>(treemap3.entryset());

collections.sort(list, new comparator>()

});system.out.println(list);

for(map.entrymap : list)

list中有map,根據map的value進行排序

list中有map,需要對map中的value進行從小到大排序,使用lambda表示式可以輕鬆實現。collections.sort list,map1,map2 system.out.println 排序後的list list map1和map2的value進行對比,如果key是string型別,...

Map根據value值進行分組

今天碰到同事在群裡問怎麼把乙個map根據value進行分組,當時我的第一想法是將value和key互換,多個value對應的不同key作為集合,如下 12 mapsatamap new hashmap final map groupmap new hashmap satamap.put a 1 sa...

根據value欄位對map進行排序

一般來說,我們通常都是通過map中的key欄位進行排序,步驟如下 treemapmap new treemap new comparator 直接新增比較器 public int compare string o1,string o2 但是卻沒有直接的方法能夠進行value排序 1.提取檢視 2.變...