【发布时间】:2014-08-20 16:30:56
【问题描述】:
我有一个整数列表,我需要找出它所在的范围。我有一个范围列表,它的大小可能最大为 2 到 15。目前对于每个整数,我都会检查范围列表并找到它的位置。但这需要很多时间,因为我需要检查的整数列表包括几千个。
//list of integers
val numList : List[(Int,Int)] = List((1,4),(6,20),(8,15),(9,15),(23,27),(21,25))
//list of ranges
val rangesList:List[(Int,Int)] = List((1,5),(5,10),(15,30))
def checkRegions(numPos:(Int,Int),posList:List[(Int,Int)]){
val loop = new Breaks()
loop.breakable {
for (va <- 0 until posList.length) {
if (numPos._1 >= posList(va)._1 && numPos._2 <= (posList(va)._2)) {
//i save "va"
loop.break()
}
}
}
}
目前对于numList 中的每个整数,我都会通过rangesList 查找其范围并保存其范围位置。有没有更快/更好的方法来解决这个问题?
更新:它实际上是与范围列表进行比较的元组列表。
【问题讨论】:
-
给我们看一些代码 :) 你试过 .par 吗?
-
你到底是什么意思:“需要找出它属于哪个范围”。您是否将每个
Int映射到Range?您的预期结果如何? -
我已经更新了这个问题。我有一个元组列表(Tuples2),我将其与范围列表进行比较,并将每个 Tuple2 映射到列表中的一个范围。我将范围的位置保存在列表中。
-
所以我猜
List[Position]应该是范围。那么为什么rangesList是(Int,Int)类型呢?你先把它们映射到Positions? -
我使用 Positions 对象,但是对于这里的示例,我想将它作为 tuple2 给出,我已经更正了示例。
标签: list scala intervals scala-collections