我有一個列表並希望添加一個序號來複制元素。Scala:添加序列號以複製列表中的元素
val lst=List("a", "b", "c", "b", "c", "d", "b","a")
結果應該是
List("a___0", "b___0", "c____0", "b___1", "c____1", "d___0", "b___2","a___1")
保留原來的順序。
我有什麼至今:
val lb=new ListBuffer[String]()
for(i<-0 to lst.length-2) {
val lbSplit=lb.map(a=>a.split("____")(0)).distinct.toList
if(!lbSplit.contains(lst(i))){
var count=0
lb+=lst(i)+"____"+count
for(j<-i+1 to lst.length-1){
if(lst(i).equalsIgnoreCase(lst(j))) {
count+=1
lb+= lst(i)+"____"+count
}
}
}
}
導致:
res120: scala.collection.mutable.ListBuffer[String]
= ListBuffer(a____0, a____1, b____0, b____1, b____2, c____0, c____1, d____0)
搞亂了秩序。此外,如果有一個更簡潔的方式,將是偉大的。
請問您能詳細解答一下嗎? – sam
如果你不介意的話,下面的問題是否可以在不添加__0的情況下離開第一次出現的字符串?特別是因爲一些條目沒有重複。 – sam
添加說明。有幾種不同的方式來添加您的修改請求。最簡單的方法是對當前結果進行「映射」,並去掉字符串中的所有「__0」部分。 – jwvh