【发布时间】:2021-05-16 10:28:24
【问题描述】:
我做错了什么?为什么这个迭代器一直运行?
default List<T> greedyAlgorithm() {
List<T> lst = new ArrayList<>();
T element = selection().next();
while(selection().hasNext()) {
if(feasibility(lst ,element)) {
assign(lst, element);
} else {
element = selection().next();
}
if(solution(lst)){
return lst;
}
}
return null;
}
可行性函数检查元素是否可行,如果是,则将元素分配给列表。然后解决方案检查这是否是“算法”解决方案并返回列表,否则检查列表中的下一个元素。
【问题讨论】:
-
方法
selection()做了什么并返回?它是否返回Iterator?您可能应该调用它一次并将Iterator保存在变量中并使用它,而不是多次调用它。如果每次调用它都返回一个新的Iterator,那么你的循环将是无限的。 -
是的选择返回一个迭代器,谢谢,尝试你的想法