如何在Java 8中向Map,BiFunction和BiConsumer添加引用参数化?

时间:2017-06-13 16:47:59

标签: java java-8

我的代码在没有Map,BiFunction和BiConsumer的引用参数化的情况下工作,并且此代码导致Java警告。我试图添加此参数化但这导致编译错误

Map numbers = new HashMap<>();
Map numbers2 = new HashMap();
numbers.put(1, "one");
numbers.put(2, "two");
numbers2.put(3, "three");
numbers2.put(4, "four");
BiFunction func = (k,v) -> v;
BiConsumer cons = (k,v) ->numbers.merge(k,v,func);
numbers2.forEach(cons);

1 个答案:

答案 0 :(得分:6)

Map<Integer, String> numbers = new HashMap<>();
Map<Integer, String> numbers2 = new HashMap<>();
numbers.put(1, "one");
numbers.put(2, "two");
numbers2.put(3, "three");
numbers2.put(4, "four");
BiFunction<String, String, String> func = (v1, v2) -> v2;
BiConsumer<Integer, String> cons = (k, v) -> numbers.merge(k, v, func);
numbers2.forEach(cons);

我猜你在func感到困惑。 Map#merge函数接受一个给定2个值(旧的和新的)产生新的合并值的函数。