第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在java 8 Stream中定義自定義排序比較器來比較鍵和值

如何在java 8 Stream中定義自定義排序比較器來比較鍵和值

臨摹微笑 2024-01-05 16:23:58
我想使用 Java 8 流對(duì)映射進(jìn)行排序并返回其鍵的列表。地圖簽名是:Map<Integer, Integer> ranks = new HashMap<Integer, Integer>();數(shù)據(jù)將類似于 [ 1=6, 5=13, 2=11 ]我必須在兩個(gè)條件下排序并返回鍵列表。如果鍵的所有值都不同,則按降序排序并返回基于值的列表,例如input [1=6 , 5=13 , 2= 11 , 4 = 14 ]result [4,5,2,1]如果鍵的兩個(gè)或多個(gè)值具有相同的排名,則按升序返回這些相似的值,而項(xiàng)目的其余部分則按其值的降序排列,例如input [2=6 , 5=13 , 1= 11 , 3=13 ,9 = 22 ] result [9,3,5,1,2]下面的代碼片段適用于條件 1,但不適用于條件 2。List<Integer> ranksList = ranks.entrySet().stream()    .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))    .map(Map.Entry::getKey)    .limit(k)    .collect(Collectors.toList());
查看完整描述

2 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

Comparator您正在尋找這樣的定制:

.sorted((o1, o2) -> o2.getValue().compareTo(o1.getValue()) == 0 ?
        o1.getKey().compareTo(o2.getKey()) : o2.getValue().compareTo(o1.getValue()))

理論上,

  • 首先按降序比較值,o2.getValue().compareTo(o1.getValue())然后

  • 如果它們相等,則按升序比較鍵o1.getKey().compareTo(o2.getKey())。


查看完整回答
反對(duì) 回復(fù) 2024-01-05
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

Comparator聲明鏈接的使用thenComparing。


Comparator<Map.Entry<Integer, Integer>> entryComparator

            = Map.Entry.<Integer, Integer>comparingByValue(Comparator.reverseOrder())

                                         .thenComparing(Map.Entry.comparingByKey());


Map<Integer,Integer> ranks = Map.of(2, 6, 5, 13, 1, 11, 3, 13, 9, 22);


List<Integer> ranksList= ranks.entrySet().stream()

            .sorted(entryComparator)

            .map(Map.Entry::getKey).limit(47)

            .collect(Collectors.toList());


System.out.println(ranksList);

輸出是所需的:


[9, 3, 5, 1, 2]


Java 需要 的類型規(guī)范<Integer, Integer>來comparingByValue推斷 的類型Map.Entry.comparingByKey()。


查看完整回答
反對(duì) 回復(fù) 2024-01-05
  • 2 回答
  • 0 關(guān)注
  • 319 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)