[英]How to "convolut" two streams
我是流的新手,但對函數式編程非常着迷。 我想“連接”兩張地圖(即字典) Map<Character, Double> map1
和Map<Character, Double> map2
具有相同的鍵集(字符集),從而導致第三張地圖Map<Character, Double> map3
具有與前兩個相同的鍵集,並且值等於map1
和map2
的適當值的差異。 能否請你幫忙? 如何通過流的方式獲取結果?
此解決方案可能會有所幫助。
Map<Character, Double> map1 = new HashMap<>();
map1.put('A', 23.0);
map1.put('B', 50.0);
Map<Character, Double> map2 = new HashMap<>();
map2.put('A', 15.0);
map2.put('B', 40.0);
//method 1 : Result stored in third map
Map<Character, Double> map3 = new HashMap<>();
map1.keySet().forEach(key -> map3.put(key, map1.get(key) - map2.get(key)));
//method 2 : using collectors
Map<Character, Double> map4 = map1.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue() - map2.get(entry.getKey())));
//method 3 : Result stored in map1
map2.forEach((key, val) -> map1.merge(key, val, (val1, val2) -> val1 - val2));
System.out.println("map1 = " + map1);
System.out.println("map3 = " + map3);
System.out.println("map4 = " + map4);
請參閱Lambda 表達式 java 文檔以獲得更好的理解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.