我有:
scala> val alphaList = List("a", "b")
alphaList: List[java.lang.String] = List(a, b)
我想要一个像元组列表:
List((a,1),(b,2))
通常在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);
我想要了解的是,如何处理List时可以使用的递增变量?
答案 0 :(得分:7)
alphaList.zipWithIndex.map {
case (k, v) => (k, v + 1)
}
zipWithIndex
用自身的元组及其索引(从0开始)替换每个元素。 map
匹配元组,并创建一个索引递增1的新元组,以便从1开始,而不是从0开始。
答案 1 :(得分:7)
作为Axel22答案的替代方案,这很好:
alphaList.zip(Stream.from(1))
答案 2 :(得分:1)
怎么样......
def zipWithIndex1[A](xs:Seq[A]) = xs.map{var i = 0; x => i+=1; (x,i)}
测试:
zipWithIndex1("sdlfkjsdlf")
//--> Vector((s,1), (d,2), (l,3), (f,4), (k,5), (j,6), (s,7), (d,8), (l,9), (f,10))