2016-07-06 46 views
1

我有元組的集合:如何用一系列元組構造一個元組?

Seq(("foo", "bar3"), ("foo", "bar1"), ("foo", "bar2")) 

我該如何申請,我得到

("foo", Seq("bar1", "bar2", "bar3")) 

我不能環繞此我的頭這樣的功能。我對函數式編程不熟悉,所以我正在考慮某種摺疊或聚合。

+0

將元組的第一個元素始終具有相同的價值?還是你想收集所有共享第一個元素相同值的第二個元素?第二個元素的次序是重要的?我注意到它不是輸入序列的順序,並且是排序的,但是這是偶然的,還是你想對它進行排序? –

+0

@TheArchetypalPaul順序並不重要。我想收集所有共享第一個元素的相同值的第二個元素。 – carpenter

+0

謝謝。那麼謝爾蓋的回答是一個很好的「聯合國」。 –

回答

2

我想您的解決方案是這樣的:

val seq = Seq(("foo", "bar3"), ("foo", "bar1"), ("foo", "bar2")) 
seq.groupBy(_._1) 
    .mapValues(_.map(_._2)) 
+0

@AlexandrDorokhin部分我同意你的看法。在代碼中做了小的改進 –

+0

@AlexandrDorokhin 但是它運行良好,即使像Seq((foo,foo1,bar1),(foo,foo1,bar2),...'(用'_._ 2'在自定義映射的最後一行代碼中。 – carpenter

相關問題