我知道这是一个菜鸟问题,但我不能找到一个简单的答案在其他地方。问题是:我需要写一个返回SortedMap
的方法,这样树Map就可以工作了。我有一个HashMap< String, Skill>
,Skill
类有getName
和getNumApplicants
两个方法,我需要返回一个SortedMap<String, Long>
,技能的名称作为键,申请者的数量作为值。这就是我的立场:
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;
}
}
我知道这应该很容易,我只是有一个非常困难的时间在理解这一切的事情。
3条答案
按热度按时间pw136qt21#
不要先将数据收集到
HashMap
,* 然后 * 转换为TreeMap
。使用重载的toMap(keyMapper, valueMapper, mergeFunction, mapSupplier)
方法直接将数据收集到TreeMap
,该方法允许您指定要创建哪个Map
(第4个参数)。nue99wik2#
这就是你能做到的
2izufjch3#
如果在你的流中,你没有两个(或更多)值应该被Map到同一个键,那么你可以完全避免使用收集器(这样你就不需要考虑合并函数)。
您只需使用
forEach
将每个技能添加到Map中即可:如果希望返回不可修改的Map,可以用
Collections.unmodifiableSortedMap
Packageresult
。