簡體   English   中英

如何“卷積”兩個流

[英]How to "convolut" two streams

我是流的新手,但對函數式編程非常着迷。 我想“連接”兩張地圖(即字典) Map<Character, Double> map1Map<Character, Double> map2具有相同的鍵集(字符集),從而導致第三張地圖Map<Character, Double> map3具有與前兩個相同的鍵集,並且值等於map1map2的適當值的差異。 能否請你幫忙? 如何通過流的方式獲取結果?

此解決方案可能會有所幫助。

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM