【发布时间】:2012-12-10 16:56:13
【问题描述】:
我有一个返回整数值或整数范围(初始..final)的方法,我想知道值是否都是不相交的。
有没有比下面这个更有效的解决方案:
ArrayList<Integer> list = new ArrayList<Integer>();
// For single value
int value;
if(!list.contains(value))
list.add(value);
else
error("",null);
// Range
int initialValue,finalValue;
for(int i = initialValue; i <= finalValue; i++){
if(!list.contains(i))
list.add(i);
else
error("",null);
}
【问题讨论】:
-
error("",null);似乎没什么用... -
范围有多大?如果它们很小,那么将它们作为一系列单独的值处理可能会很有效,但如果它们很大(数百个),那么将它们作为范围处理可能会更好,并将单独的值处理为范围的特殊情况,包含一个值。
-
@BrendanLong 显然,该错误只是一个示例。 Tom Anderson:范围很难预测(这个控件是针对 dsl 的),但我认为它们大约是一两百。
标签: java processing-efficiency disjoint-union