Android的Java的地图与双功能定制合并

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

在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没有lambda表达式的Java 8支持。因此,我认为我需要实现myRemappingFunction为双功能,但我有与理解双功能接口声明得到任何编译麻烦。

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

任何提示请?

java android lambda functional-interface
1个回答
1
投票

remappingFunctionBiFunction<? super MyObject, ? super MyObject,? extends MyObject>的实现,其是使用你需要在这里定义apply方法进行评估。

考虑这样一个例子,当您将合并整数属性val(总结)您MyObject如果它们映射到相同的密钥,那么实现将如下所示:

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