tuple只能有tuple2到tuple22
problem
你想要合併兩個有序集合成為乙個鍵值對集合
solution
使用zip方法合併兩個集合:
scala> val women = list
("wilma"
, "betty"
)women: list
[string] = list
(wilma, betty)
scala> val men = list
("fred"
, "barney"
)men: list
[string] = list
(fred, barney)
scala> val couples = women zip men
couples: list
[(string, string)] = list
((wilma,fred), (betty,barney))
上面建立了乙個二元祖集合,它把兩個原始集合合併為乙個集合。下面我們來看下如何對zip的結果進行遍歷:
scala> for
((wife,husband) <- couples)
wilma is
merried to fred
betty is
merried to barney
一旦你遇到類似於couples這樣的二元祖集合,你可以把它轉化為乙個map,這樣看起來更方便:
scala> val couplesmap = couples.tomap
couplesmap: scala.collection.immutable.map[string
,string
] = map(wilma -> fred, betty -> barney)
discussion
如果乙個集合包含比另乙個集合更多的元素,那麼當使用zip合併集合的時候,擁有更多元素的集合中多餘的元素會被丟掉。如果乙個集合只包含乙個元素,那麼結果二元祖集合就只有乙個元素。
scala> val products = array
("breadsticks"
, "pizza"
, "soft drink"
)products: array
[string
] = array
(breadsticks, pizza, soft drink)
scala> val prices = array(4)
prices: array
[int] = array(4)
scala> val productswithprice = products.zip(prices)
productswithprice: array
[(string
, int)] = array
((breadsticks,4
))
注意:我們使用unzip方法可以對zip後的結果反向操作:
scala> val (a,b) = productswithprice.unzip
a: scala.collection.mutable.indexedseq[string]
= arraybuffer(breadsticks)
b: scala.collection.mutable.indexedseq[int]
= arraybuffer(4
)
Scala 合併兩個Map
把scala的兩個map合併,合併的時候會遇到相同的鍵和不同的鍵,scala val m1 map 1 10,2 4 m1 scala.collection.immutable.map int,int map 1 10,2 4 scala val m2 map 2 5,4 8 m2 scala.co...
Scala 之 合併兩個map
開發中遇到需求 合併兩個map集合物件 將兩個對應key的值累加 先說解決方案 map1 map2 這特麼什麼鬼 首先 scala中現有的合併集合操作不能滿足這個需求 注意合併後的結果a的g02的值其實是被覆蓋掉了。然後 說說那個表示式中 a b 這部分是什麼鬼。這個其實是scala簡化的foldl...
合併兩個byte
byte sshead system.text.encoding.unicode.getbytes this is head byte sscontent system.text.encoding.unicode.getbytes this is content.sshead sscontent b...