2016-05-15 121 views
2

好,我是新來的Scala和我有一個問題 我需要的情況下類的列表轉換爲類似這樣Scala集合串

unit1 res_1 
unit1 res_2 
unit1 res_3 

case class Items(unitId: String, residents: List[String]) 

我想這樣的事情

val l : List[Items] 

val mappingList = l.map(item => { 
    item.residents.map(r => item.unitId + ' ' + r) 
}).flatten 

mappingList.mkString('\n') 

任何人都可以提出更好的方法嗎?

感謝 Swetha

回答

1

你的做法是正確的。您可以通過摺疊map其次flatten簡化成flatMap

case class Items(unitId: String, residents: List[String]) 

def itemsToString(l: List[Items]): String = 
    l.flatMap { item => 
    item.residents.map(r => item.unitId + ' ' + r) 
    } .mkString("\n") 
1

這類問題往往更明確使用的理解:

val mappingList = for { 
    item <- l 
    resident <- item.residents 
} yield item.unitId + ' ' + resident 

mappingList mkString "\n"