如何在Arraylist耗尽时将值设置为null。
问题描述:
我在Java上工作。 我尝试下面的代码如何在Arraylist耗尽时将值设置为null。
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()
将是错误的,但问题即时得到是因为while循环,当itr.hasNext()
变得虚假,设置为elementToReturn最后的值保持为它是,它是返回,因为它是,但我想返回null时elementsToUse
的列表中有没有更多的元素..
答
如果在将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;
}
}
答
只是返回你的价值观不同
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;
}
}
答
修改代码,就像下面
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;
}
}
答
这里是你的代码的一个较短的版本,做同样的事情。我假设usedElements是一个Set,因为不允许重复。
public Proxy getNextElement() {
if (proxiesToUse == null) return getNextProxy();
for (Element element : elementToUse)
if (usedElements.add(element)) return element;
return null;
}