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
));
}

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);
}

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,如果你想返回一個不可修改的映射。
添加回答
舉報