如何将增量计数器添加到列表的每个元素

ftr*_*ers 1 scala

我有:

scala> val alphaList = List("a", "b")
alphaList: List[java.lang.String] = List(a, b)
Run Code Online (Sandbox Code Playgroud)

我想要一个像元组列表:

List((a,1),(b,2))
Run Code Online (Sandbox Code Playgroud)

通常在Java中我会做类似的事情:

List alphaList = new ArrayList<String>()
alphaList.add("a");alphaList.add("b");
List newList = new ArrayList<String>();
for ( int i = 0; ii < alphaList.size(); i++ )
  newList.add(alphaList[i] + i);
Run Code Online (Sandbox Code Playgroud)

我想要的是,如何获得一个可以在处理List时使用的递增变量?

axe*_*l22 7

alphaList.zipWithIndex.map {
  case (k, v) => (k, v + 1)
}
Run Code Online (Sandbox Code Playgroud)

zipWithIndex替换的本身和它的索引的元组的每个元素(从0开始).本map场比赛的元组,并创建加1的指数新的记录,让你从1开始,而不是0.


Did*_*ont 7

作为Axel22答案的替代方案,这很好:

alphaList.zip(Stream.from(1))
Run Code Online (Sandbox Code Playgroud)

  • 但是,如果`Iterator.from(1)`编译,会更好. (2认同)