我有一个列表并希望添加一个序号来复制元素。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