我正在研究java。 我正在尝试下面的代码
public Proxy getNextElement() {
Iterator<Element> itr = elementsToUse.iterator();
if (proxiesToUse != null ){
while (itr.hasNext()) {
elementToReturn = itr.next();
if(usedElements.contains(elementToReturn)==false){
usedElements.add(elementToReturn);
break;
}
}
return elementToReturn;
}else{
Proxy nextElementToReturn = getNextProxy();
return nextElementToReturn;
}
}
现在我想在itr.hasNext()
为false时抛出异常,但是我得到的问题是因为while循环,当itr.hasNext()
变为false时,设置为elementToReturn的最后一个值保持原样并且它按原样返回但我想在elementsToUse
列表中没有更多元素时返回null ..
答案 0 :(得分:1)
只需以不同方式返回您的值
public Proxy getNextElement() {
Iterator itr = elementsToUse.iterator();
if (proxiesToUse != null) {
while (itr.hasNext()) {
elementToReturn = itr.next();
if (usedElements.contains(elementToReturn) == false) {
usedElements.add(elementToReturn);
return elementToReturn;
}
}
return null;
} else {
Proxy nextElementToReturn = getNextProxy();
return nextElementToReturn;
}
}
答案 1 :(得分:0)
如果在将 elementToReturn 设置为null之前没有要检查的条件,则可以在while循环后直接将elementToReturn设置为false。
public Proxy getNextElement() {
Iterator<Element> itr = elementsToUse.iterator();
if (proxiesToUse != null ){
while (itr.hasNext()) {
elementToReturn = itr.next();
if(usedElements.contains(elementToReturn)==false){
usedElements.add(elementToReturn);
break;
}
}
elementToReturn = null;
return elementToReturn;
}else{
Proxy nextElementToReturn = getNextProxy();
return nextElementToReturn;
}
}
答案 2 :(得分:0)
修改您的代码,如下所示
boolean condition = true;
while (condition) {
elementToReturn = itr.next();
condition = itr.hasNext(); //condition to check next element present
if(usedElements.contains(elementToReturn)==false){
usedElements.add(elementToReturn);
break;
}
}
答案 3 :(得分:0)
以下是代码的较短版本,它执行相同的操作。我假设usedElements是一个Set,因为不允许重复。
public Proxy getNextElement() {
if (proxiesToUse == null) return getNextProxy();
for (Element element : elementToUse)
if (usedElements.add(element)) return element;
return null;
}