【发布时间】:2018-05-26 13:49:00
【问题描述】:
我正在尝试找到在 Scala 集合中查找对的最佳方法。例如,
val list = List(1,2,3)
应该产生这些对
(1,2) (1,3) (2,1) (2,3) (3,1) (3,2)
我目前的工具似乎相当昂贵。我该如何进一步优化呢?
val pairs = list.flatMap { currentElement =>
val clonedList: mutable.ListBuffer[Int] = list.to[ListBuffer]
val currentIndex = list.indexOf(currentElement)
val removedValue = clonedList.remove(currentIndex)
clonedList.map { y =>
(currentElement, y)
}
}
【问题讨论】:
-
当您说“优化”时,您希望它优化什么?比如CPU和内存哪个更重要?另一个问题是源列表的典型大小是多少? (是几十个元素?几千个?几百万个?)
-
重复项呢?
(1, 1, 2)应该产生什么? -
@Brian 该解决方案会产生重复项:(1,1)
-
@Tom 我们必须忽略重复项,以便当前元素不与自身配对
标签: algorithm scala collections