2017-04-14 5 views
0

アイテムはカスタムタイプです。 私はペアの反復可能性を持っています(Item, Item)。各ペアの最初の要素は同じであるので、私はタイプ(Item, Array[Item])タプルのリストをスカラの単一のタプルに減らす

// list: Iterable[(Item, Item)]

//最初の試み

val res = list.foldLeft((null, Array[Item]()))((p1,p2) => { 
      (p2._1, p1._2 :+ p2._2) 
} 

// 2番目の試みの一つのペアにリストを減らしたいです

val r = list.unzip 
val res = (r._1.head, r._2.toArray)) 

1.私が正しくセットアップ最初のゼロ値が(「折り畳み方法がわかりません「左」)の解決策である。このようなことをする方法はありますか?

2.第2の解決策以外にも、カスタムオブジェクトタプルのリストを1つのタプルに減らす方法がありますか?

+3

'(list.head._1、list.mapを(_ 2)) '? – Psidom

答えて

1

あなたはすべてのペアの最初の要素が同じであることを確認している場合は、なぜあなたは簡単にするためにその情報を使用していませんか?

(list.head._1, list.map(_._2)) 

最初の要素が異なる場合、他の例がある場合は、あなたが試してみたいことがあり

作業を行う必要があります。

list.groupBy(_._1).map { case (common, lst) => (common, lst.map(_._2)) } 
関連する問題