3

次のようなリストがあります。

val lines: List[String] = List("bla blub -- id_1", "sdkfjdf -- id_2", "blubber blab -- id_1", "foo -- id_3", "ieriuer -- id_2", "bar -- id_3")

したがって、基本的にリストには、正確に 2 回存在する識別子 (id_x) と、識別子の 1 つに属する文字列が含まれます。

その 1 つのリストを 2 つのリストに分割し、それぞれに固有の文字列を持つ id_s のセットを次のように含めます。

l1("bla blub -- id_1", "sdkfjdf -- id_2", "foo -- id_3") 
l2("blubber blab -- id_1", "ieriuer -- id_2", "bar -- id_3")

機能的な方法でそれを行うにはどうすればよいですか?

よろしく、 スヴェン

4

2 に答える 2

3
lines.groupBy(_.split(" -- ")(1)).toList.map(_._2).transpose

それは大雑把で準備が整った方法です。実際には、このデータでさらに何かをしたい場合は、アイテムをケースクラスに解析する方がおそらく良いでしょう:

case class Item(id: String, text: String)
val items = for {
  line <- lines
  Array(text, id) = line.split(" -- ")
} yield Item(id, text)

次に、 を除いて上記と同じことを行いgroupBy(_.id)ますsortBy(_.id)

于 2013-08-07T22:43:55.283 に答える