Điều gì sẽ là một cách chức năng để nén hai từ điển trong Scala?Zip hai HashMaps (hoặc từ điển)
map1 = new HashMap("A"->1,"B"->2)
map2 = new HashMap("B"->22,"D"->4) // B is the only common key
zipper(map1,map2)
nên cung cấp cho một cái gì đó tương tự như
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
Nếu không chức năng, bất kỳ phong cách khác cũng được đánh giá cao
Data.Map của Haskell có một bộ kết hợp tuyệt vời được gọi là 'unionWith', điều này sẽ khiến việc này trở nên dễ dàng một cách đáng kinh ngạc. Nó và đối tác giao lộ của nó là đáng kể hữu ích, và tôi hối tiếc rằng họ chỉ có sẵn trong Scala 'IntMap' và' LongMap' (chủ yếu là vì những người được dịch từ Haskell, tôi mong đợi). – copumpkin
@copumpkin: Haskell thật tuyệt vời! Tôi sẽ kiểm tra unionWith.I chỉ cần kiểm tra IntMap và nó bây giờ là superceded bởi HashMap từ 2,8 trên – RAbraham
Nó không thực sự thay thế bởi 'HashMap', mặc dù những gì các tài liệu bình luận cho thấy. Chúng là các cấu trúc khác nhau và 'IntMap' có các thuộc tính khác nhau. Đôi khi bạn thực sự không muốn hàm băm trong đó, đặc biệt khi bạn muốn duy trì thứ tự dữ liệu. 'IntMap' chủ yếu có thể thực hiện' SortedMap' nhưng tôi không nghĩ nó hiện tại. Một trong số đó là nó tuân theo một thứ tự "unsigned", nhưng nó không khó để làm cho nó hoạt động như một dấu hiệu nếu đó là những gì bạn cần. – copumpkin