2017-12-29 38 views
1

을 이용하여 적절한 데이터 형식 OUPUT 인쇄 I 적절한 형식으로 데이터를 표시 할 것 I은스칼라 스칼라

val maplist=List(Map("id" -> "1", "Name" -> "divya"), 
    Map("id" -> "2", "Name" -> "gaya") 
) 

val header=maplist.flatMap(_.keys).distinct 
val data=maplist.map(_.values) 
println(header.mkString(" ")) 
data.foreach(x => println(x.mkString(" "))) 

이것이

id Name 
1 divya 
2 gaya 

하지만 I로 표시되는 다음 코드를 가지고 같은 보여 드리고자합니다, 나는 당신이 분리를 원하는 경우에는를 사용해야합니다

+----+-----+ 
|Id |Name | 
+----+-----+ 
|1 |Divya| 
|2 |gaya | 
+----+-----+ 

답변

0

df.show() 함수를 사용 할 수 있습니다 더 많은 매개 변수와방법은, 당신은 API

된 mkString 체크인 (시작 : 문자열 9 월 : 문자열, 끝 : 문자열) : 수 문자열

가 표시이에 이동 반복자의 모든 요소를 ​​문자열 에 start, end 및 separator 문자열을 사용합니다.

val separatorLine = "+----+-----+" 
    val separator = "|" 
    val maplist=List(Map("id" -> "1", "Name" -> "divya"), 
    Map("id" -> "2", "Name" -> "gaya") 
) 

    val header=maplist.flatMap(_.keys).distinct 
    val data=maplist.map(_.values) 
    println(separatorLine) 
    println(header.mkString("|", " |", "|")) 
    println(separatorLine) 
    data.foreach(x => println(x.mkString("|", " |", "|"))) 
    println(separatorLine) 

결과 :

+----+-----+ 
|id |Name| 
+----+-----+ 
|1 |divya| 
|2 |gaya| 
+----+-----+ 

업데이트 : 당신은 모든 문자열의 길이가 같습니다 할 경우 (예 5) 당신이 필요로 할 때 요 공백을 추가 auxiliar 방법을 수행 할 수 있습니다

을 다음과 같은 결과가 두 번째 버전
@tailrec 
    private def appendElem(original : String, desiredLength: Int, c: Char): String = { 
    if (original.length < desiredLength) 
     appendElem(original + c, desiredLength, c) 
    else { 
     original 
    } 
    } 
    val separator = "|" 
    val maplist=List(Map("id" -> "1", "Name" -> "divya"), 
    Map("id" -> "2", "Name" -> "gaya") 
) 

    val separatorLine = List.fill(maplist.size)("+").map(appendElem(_, 6,'-')).mkString+ "+" 
    val header=maplist.flatMap(_.keys.map(key => appendElem(key, 5, ' '))).distinct 
    val data=maplist.map(_.values) 
    println(separatorLine) 
    println(header.mkString("|", "|", "|")) 
    println(separatorLine) 
    data.map(x => x.map(y => appendElem(y, 5, ' '))).foreach(x => println(x.mkString("|", "|", "|"))) 
    println(separatorLine) 

+-----+-----+ 
|id |Name | 
+-----+-----+ 
|1 |divya| 
|2 |gaya | 
+-----+-----+