当Arraylist耗尽时,如何将值设置为null。

时间:2011-01-06 11:02:54

标签: java arraylist

我正在研究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 ..

4 个答案:

答案 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;
}