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

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

首先按值對地圖進(jìn)行排序,然后按鍵

首先按值對地圖進(jìn)行排序,然后按鍵

紅顏莎娜 2022-06-04 09:11:23
我實(shí)際上能夠僅Map根據(jù)Key和value對它們進(jìn)行排序,我什至嘗試對它們進(jìn)行如下排序:我根據(jù)國家對學(xué)生進(jìn)行排序,如果兩個(gè)學(xué)生碰巧相同states,則StudentID僅在匹配的國家中排序。到目前為止我已經(jīng)嘗試過:final Map<Integer, String> studentMaster = new HashMap<>() {{        put(146, "Sweden");        put(148, "Sweden");        put(110, "Orebro");        put(6, "Malmo");        put(14, "Orebro");        put(26, "Malmo");    }       };    studentMaster.entrySet().stream()    .sorted((i1,i2)->i1.getValue().compareTo(i2.getValue()))    .sorted((j1,j2)->j1.getKey().compareTo(j2.getKey()))    .forEach(System.out::println);我得到的結(jié)果**(實(shí)際輸出)**14=Orebro26=Malmo110=Orebro146=Sweden148=Sweden預(yù)期輸出:  26=Malmo  14=Orebro  110=Orebro  146=Sweden  148=Sweden
查看完整描述

3 回答

?
米脂

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

注意:您的預(yù)期和實(shí)際輸出與您添加到Map.


您的代碼不起作用的原因是因?yàn)槟鶶tream#sorted使用兩個(gè)單獨(dú)的 s 調(diào)用了兩次Comparator,所以在您的情況下,第一次調(diào)用Stream#sorted是無用的(因?yàn)樗坏诙握{(diào)用覆蓋了)。


Comparator通過將自定義傳遞給以下內(nèi)容,我能夠?qū)崿F(xiàn)您的預(yù)期輸出Stream#sorted:


Map.Entry.<Integer, String>comparingByValue()

    .thenComparing(Map.Entry.comparingByKey())

輸出:


6=Malmo

26=Malmo

14=Orebro

110=Orebro

146=Sweden

148=Sweden


查看完整回答
反對 回復(fù) 2022-06-04
?
largeQ

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

有時(shí)我回答了如何在 java 中對名稱和年齡進(jìn)行排序,除了用于存儲的數(shù)據(jù)結(jié)構(gòu)之外,與您的問題有許多相似之處。遍歷每個(gè)鍵并對其進(jìn)行排序,然后再次按值進(jìn)行排序,然后再排序是非常乏味的,并且會讓您感到非常困惑。只記得你以前不使用Stream時(shí)在 Map 中的遍歷方式:


for (Map.Entry<String,String> entry : somemap.entrySet()){..Some Statements..};

studentMaster.entrySet().stream()

    .sorted(Comparator.comparing((Map.Entry<Integer, String> m) -> m.getValue())

              .thenComparing(Map.Entry::getKey)).forEach(System.out::println);

輸出


6=Malmo

26=Malmo

14=Orebro

110=Orebro

146=Sweden

148=Sweden


查看完整回答
反對 回復(fù) 2022-06-04
?
MMTTMM

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

Comparator應(yīng)該是這樣的:


Comparator<Entry<Integer, String>> comparator = (o1, o2) -> {

    int i = o1.getValue().compareTo(o2.getValue());

    if (i == 0) {

        return o1.getKey().compareTo(o2.getKey());

    } else {

        return i;

    }

};

然后將其傳遞給Stream#sorted方法: studentMaster.entrySet().stream().sorted(comparator).forEach(System.out::println);


輸出:


6=Malmo

26=Malmo

14=Orebro

110=Orebro

146=Sweden

148=Sweden


查看完整回答
反對 回復(fù) 2022-06-04
  • 3 回答
  • 0 關(guān)注
  • 108 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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