android java 地图与自定义 BiFunction 合并

android java Map merge with custom BiFunction

在 Android 上使用 Java,我想将一个元素合并到具有自定义重映射功能的地图中。

Map<String, MyObject> map = new HashMap<String, MyObject>();
// init map with some values here....  then
MyObject xMyObject = new MyObject(123); // init this instance of MyObject
map.merge("key", xMyObject, myRemappingFunction);

我了解 Android Java 没有 Java 8 对 lambda 表达式的支持。所以我认为我需要将 myRemappingFunction 实现为 BiFunction,但我在理解 BiFunction 接口声明以获取任何内容进行编译时遇到了麻烦。

public static BiFunction<? super MyObject,? super MyObject,? extends MyObject> remappingfunction()

有什么提示吗?

remappingFunctionBiFunction<? super MyObject, ? super MyObject,? extends MyObject> 的实现,它使用您需要在此处定义的 apply 方法进行评估。

考虑一个示例,当您合并 MyObject 的整数属性 val(通过求和)时,如果它们映射到相同的键,则实现看起来像:

map.merge("key", xMyObject, new BiFunction<MyObject, MyObject, MyObject>() {
    // this is the definition of what to do for two such values
    @Override
    public MyObject apply(MyObject myObject1, MyObject myObject2) {
        return new MyObject(myObject1.getVal() + myObject2.getVal());
    }
});

这也可以在 lambda 中表示为:

map.merge("key", xMyObject, 
                (myObject1, myObject2) -> new MyObject(myObject1.getVal() + myObject2.getVal()));