2014-11-21 2 views
5

Привет, ребята, у меня есть список кортежей пар, List[(String,String)] и хотят, чтобы сгладить его в список строк, List[String]Scala Список кортежей плоский список

Любая помощь приветствуется.

+4

Как бы вы из двух строк в одну строку? Мы не знаем, как вы хотите их комбинировать. –

+4

не очень scala эти угловые скобки ... – soulcheck

+1

хорошо, у вас есть кортеж из 2-х строк, т. Е. <«Иоанн,« Павел »> и после некоторого сглаживания .... Список ...« Джон »,« Пол » –

ответ

9

Некоторые из вариантов может быть: конкатенации:

list.map(t => t._1 + t._2) 

один за другим чередованием (после того, как Ваш комментарий, кажется, вы просили это):

list.flatMap(t => List(t._1, t._2)) 

раскол и добавить их :

list.map(_._1) ++ list.map(_._2) 
+0

спасибо, я попробую его –

+0

Имейте в виду, что третий вариант довольно неэффективен: он проходит один и тот же список дважды, чем добавляет список к другому, который имеет линейную сложность. – stefanobaghino

6

Ну, вы всегда можете использовать flatMap, как в:

list flatMap (x => List(x._1, x._2)) 

Хотя ваш вопрос немного расплывчатый.

3

Try:

val tt = List(("John","Paul"),("George","Ringo")) 
tt.flatMap{ case (a,b) => List(a,b) } 

Это приводит к:

Списка (Джон, Пол, Джордж, Ринго)

0

В целом для списков кортежей любой арности, рассмотрят это,

myTuplesList.map(_.productIterator.map(_.toString)).flatten 

Обратите внимание: productIterator отличает все типы в кортеже до Any, поэтому мы возвращаем значения здесь String.

Смежные вопросы