2016-05-15 104 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"