我有一个带有过滤行ID的Integer集合,我试图在其中搜索序列/范围以优化MySQL选择查询。举个例子:
Integer-Collection可能非常分散:
[1,2,88,101,200] = Sequence(1-2,88,101,200)
或者非常完全:
[1,2,3,4,..,198,199,200] = Sequence(1-200)
是否有任何Java算法可以在集合中查找序列或改善我的阅读模式?
答案 0 :(得分:1)
你的藏品有多长?除非您有数百万个项目,否则最好将集合完全加载到内存中,对其进行排序然后扫描范围。
在排序列表中,查找范围很简单。只需按顺序扫描;如果下一个元素不是前一个元素+ 1,则一个范围刚刚结束,另一个范围开始。