在Scala中向后遍历两个(长度不同)列表的最有效方法是什么。
所以有两个清单
List(a,b,c) and List(1,2)
Run Code Online (Sandbox Code Playgroud)
对将是
(c,2) and (b,1)
Run Code Online (Sandbox Code Playgroud)
注意:我宁愿不要对每个列表做相反的处理。
一个简单的方法是:
List('a','b','c').reverse zip List(1,2).reverse
Run Code Online (Sandbox Code Playgroud)
O(n)但是,如果您担心效率问题,可以倒退清单。
根据List的scaladoc,使用reverseIterator 可能会更有效。这样一来,您就不会创建与一样的新列表reverse,而是在不断迭代时遍历它。那将是:
val it = list1.reverseIterator zip list2.reverseIterator //returns an Iterator you can force
it.toList // List((c,2), (b,1))
Run Code Online (Sandbox Code Playgroud)