我的代码在没有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);
答案 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个值(旧的和新的)产生新的合并值的函数。