如何获取泛型函数<T,R>映射器的输入参数

问题描述 投票:0回答:1

我有一个成员列表,我需要将其映射为不同用途的不同键,并且我想将映射方法转变为将 keyMapper 作为 Collectors.toMap() 方法的输入参数。

公共地图 getMemberMap(){ Collections.unmodifyingMap(getMemberList().stream.collect(Collectors.toMap(Member::getName, Function.identity()))); }

如何将此方法转变为采用 Function 键映射器来映射会员的不同字段。

如 getMemberMap({id}) 或 getMemberMap({code})

java collectors functional-interface
1个回答
0
投票

首先需要更改方法以接受该功能。我在这里使用通配符以获得更大的灵活性:

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());
© www.soinside.com 2019 - 2024. All rights reserved.