什麼是在Scala中壓縮兩個字典的功能方式?Zip 2 HashMap(或字典)
map1 = new HashMap("A"->1,"B"->2)
map2 = new HashMap("B"->22,"D"->4) // B is the only common key
zipper(map1,map2)
應該給類似的東西來
Seq(("A",1,0), // no A in second map, so third value is zero
("B",2,22),
("D",0,4)) // no D in first map, so second value is zero
如果沒有的功能,任何其他樣式也可以理解使用get
Haskell的Data.Map有一個美妙的combinator,名爲'unionWith',它可以使這非常簡單。它和它的交集對應是非常有用的,我很遺憾他們只能在Scala的'IntMap'和'LongMap'中使用(主要是因爲那些從Haskell翻譯過,我期望)。 – copumpkin 2013-04-28 00:32:26
@copumpkin:哈斯克爾太棒了!我會檢查出unionWith.I只是檢查了IntMap,它現在被HashMap從2.8773替換爲 – RAbraham 2013-04-28 00:36:53
。儘管文檔註釋的含義,它並沒有被'HashMap'所取代。它們是不同的結構,'IntMap'具有不同的屬性。有時你真的不希望哈希函數在那裏,特別是當你想維護數據的順序時。 'IntMap'大多可以實現'SortedMap',但我認爲它現在不行。一個問題是,它遵循一個「無符號」的順序,但如果這是你所需要的,就不難使其表現得像一個簽名的那樣。 – copumpkin 2013-04-28 01:58:56