3 回答
TA贡献1836条经验 获得超3个赞
不要HashMap先将数据收集到 a ,然后转换为TreeMap. TreeMap使用重载toMap(keyMapper, valueMapper, mergeFunction, mapSupplier)方法将数据直接收集到 a ,该方法允许您指定Map要创建的对象(第 4 个参数)。
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贡献1796条经验 获得超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贡献1815条经验 获得超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,如果你想返回一个不可修改的映射。
添加回答
举报