假设我有一个包含单个值或值范围的列表。现在,如果我向此列表添加新值或范围,它可能会与当前值/范围的多个重叠。应该组合所有这些重叠对象以创建应添加到列表中的新实例,同时需要从原始列表中删除包含在新实例中的对象。
所以我的问题是,我是否应该从列表中删除这些对象,或者在每次迭代时创建一个新列表。也就是说,付诸代码:
解决方案1
for (Range newObj : newItems){
Iterator it = oList.iterator();
while (it.hasNext()){
Range o = it.next();
if (canCombine(newObj, o)){
newObj = combine(newObj, o);
it.remove();
}
}
oList.add(newObj);
}
解决方案2
for (Range newObj : newItems){
List newList = new ArrayList();
for (Range o : oList){
if (canCombine(newObj, o)){
new = combine(newObj, o);
} else {
newList.add(o);
}
}
newList.add(newObj);
oList = newList;
}
也许另一种解决方案更好。如果是的话,请告诉我。
答案 0 :(得分:0)
我认为每次迭代newItems都可以避免创建newList,或者可以避免创建新列表。
for (Object newObj : newItems){
for(int i=0;i<oList.size();i++){
if (canCombine(newObj, oList.get(i))){
newObj = combine(newObj, oList.get(i));
oList.remove(i);
}
}
oList.add(newObj);
}