在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()
任何提示请?
该remappingFunction
是BiFunction<? 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()));