我有一组整数范围,代表着各个类别的下限和上限。例如:
0..500 xsmall
500..1000 small
1000..1500 medium
1500..2500 large
在我的情况下,可能会有超过500个类。这些类不会重叠,但它们的大小可能会不同。
例如,我可以通过在列表中进行简单的线性搜索来实现查找匹配范围的方法。
class Range
{
int lower;
int upper;
String category;
boolean contains(int val)
{
return lower <= val && val < upper;
}
}
public String getMatchingCategory(int val)
{
for (Range r : listOfRanges)
{
if (r.contains(val))
{
return r.category;
}
}
return null;
}
然而,这样似乎很慢;因为我需要平均N/2次查找。如果类别大小相等,我可以使用除法。是否有一种标准技术可以更快地找到正确的范围?