我有如圖逗號分隔的數字數組:將多個連續的條目中的Scala /火花
一個:{108,109,110,112,114,115,116,118}
我所需要的輸出是這樣的:
一個:{108-110,112,114-116,118}
我試圖將連續的數字與之間的「 - 」進行分組。 例如,108,109,110是連續數字,所以我得到108-110。 112是單獨的條目; 114,115,116再次代表一個序列,所以我得到114-116。 118是分開的,如此對待。
我在Spark中這樣做。我寫以下代碼:
import scala.collection.mutable.ArrayBuffer
def Sample(x:String):ArrayBuffer[String]={
val x1 = x.split(",")
var a:Int = 0
var present=""
var next:Int = 0
var yrTemp = ""
var yrAr= ArrayBuffer[String]()
var che:Int = 0
var storeV = ""
var p:Int = 0
var q:Int = 0
var count:Int = 1
while(a < x1.length)
{
yrTemp = x1(a)
if(x1.length == 1)
{
yrAr+=x1(a)
}
else
if(a < x1.length - 1)
{
present = x1(a)
if(che == 0)
{
storeV = present
}
p = x1(a).toInt
q = x1(a+1).toInt
if(p == q)
{
yrTemp = yrTemp
che = 1
}
else
if(p != q)
{
yrTemp = storeV + "-" + present
che = 0
yrAr+=yrTemp
}
}
else
if(a == x1.length-1)
{
present = x1(a)
yrTemp = present
che = 0
yrAr+=yrTemp
}
a = a+1
}
yrAr
}
val SampleUDF = udf(Sample(_:String))
我正在輸出如下:
一個:{108-108,109-109,110-110,112,114-114,115- 115,116-116,118}
我無法弄清楚我哪裏出錯了。你能幫我解決這個問題嗎? TIA。
請解釋導致您的預期輸出的規則。而且,這不是真的與spark相關,它只是一個scala問題 –
@RaphaelRoth我在我的問題中編輯了規則。 –