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()
有什么提示吗?
remappingFunction
是 BiFunction<? 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()));
在 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()
有什么提示吗?
remappingFunction
是 BiFunction<? 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()));