我有一个成员列表,我需要将其映射为不同用途的不同键,并且我想将映射方法转变为将 keyMapper 作为 Collectors.toMap() 方法的输入参数。
公共地图
如何将此方法转变为采用 Function
如 getMemberMap({id}) 或 getMemberMap({code})
首先需要更改方法以接受该功能。我在这里使用通配符以获得更大的灵活性:
public <R> Map<R, Member> getMemberMap(Function<? super Member, ? extends R> mapper) {
return getMemberList().stream()
.collect(Collectors.toUnmodifiableMap(mapper, Function.identity()));
}
然后您可以根据需要调用它:
getMemberMap(Member::getId);
getMemberMap(Member::getCode);
getMemberMap(Member::getName);
getMemberMap(member -> member.getName().toUpperCase());