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

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

如何將流收集到 TreeMap 中

如何將流收集到 TreeMap 中

湖上湖 2021-08-25 15:29:56
我知道這是一個菜鳥問題,但我在其他任何地方都找不到簡單的答案。問題是:我需要編寫一個返回 a 的方法SortedMap,因此樹圖應(yīng)該可以正常工作。我有一個HashMap< String, Skill>,Skill該類具有方法getName和getNumApplicants我需要返回一個SortedMap<String, Long>,以技能名稱為鍵,以申請人數(shù)為值。這是我的立場:private Map<String,Skill> skillMap = new HashMap<>();public SortedMap<String, Long> skill_nApplicants() {    return skillMap.values().stream().collect(...);}這是技能課public class Skill {    private String name;    private List <Position> reqPosition = new ArrayList<>();    private Long numApplicants;    public void plusOneApplicant() {        this.numApplicants++;    }    public Long getNumApplicants() {        return numApplicants;    }    public Skill(String name) {        super();        this.name = name;        this.numApplicants = 0L;    }    public String getName() {        return name;        }    public List<Position> getPositions() {        return reqPosition;        }    public void addReqPosition(Position p) {        this.reqPosition.add(p);        return;    }}我知道這應(yīng)該很容易,我只是很難理解這一切。
查看完整描述

3 回答

?
米脂

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

不要HashMap先將數(shù)據(jù)收集到 a ,然后轉(zhuǎn)換為TreeMap. TreeMap使用重載toMap(keyMapper, valueMapper, mergeFunction, mapSupplier)方法將數(shù)據(jù)直接收集到 a ,該方法允許您指定Map要創(chuàng)建的對象(第 4 個參數(shù))。


public SortedMap<String, Long> skill_nApplicants() {

    return skillMap.values().stream().collect(Collectors.toMap(

            Skill::getName,

            Skill::getNumApplicants,

            Math::addExact, // only called if duplicate names can occur

            TreeMap::new

    ));

}


查看完整回答
反對 回復(fù) 2021-08-25
?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗 獲得超10個贊

這是你可以做到的


public SortedMap<String, Long> skill_nApplicants(Map<String, Skill> skillMap) {

    Map<String, Long> result = skillMap.values().stream().collect(Collectors.toMap(Skill::getName, Skill::getNumApplicants));

    return new TreeMap<>(result);

}


查看完整回答
反對 回復(fù) 2021-08-25
?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗 獲得超13個贊

如果您沒有任何值將映射到與另一個值相同的鍵,那么您可以完全避免使用收集器(因此您無需考慮合并功能)。


您需要做的就是使用以下命令將每個技能添加到地圖中forEach:


public SortedMap<String, Long> skill_nApplicants() {

    Map<String, Long> result = new TreeMap<>();

    

    skillMap.values()

        .forEach((skill) -> result.put(skill.getName(), skill.getNumApplicants());

        

    return result;

}

你可以用result用Collections.unmodifiableSortedMap,如果你想返回一個不可修改的映射。


查看完整回答
反對 回復(fù) 2021-08-25
  • 3 回答
  • 0 關(guān)注
  • 265 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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