简体   繁体   English

Arraylist耗尽时如何将值设置为null?

[英]How to set value to null when Arraylist gets exhausted.?

I m working on java. 我正在使用Java。 im trying below piece of code 我正在尝试下面的代码

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

now i want to throw the exception when itr.hasNext() will be false but the problem im getting is because of while loop, when itr.hasNext() gets false,the last value set to elementToReturn remains as it is and it is returned as it is but i want to return null when the list of elementsToUse has no more elements.. 现在我想在itr.hasNext()为false时抛出异常,但是我遇到的问题是由于while循环,当itr.hasNext() false时,最后设置为elementToReturn的值保持原样并返回照原样,但是当elementsToUse列表中没有更多元素时,我想返回null。

Just return your values differently 只是以不同的方式返回您的价值观

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

If there is no condition to check before setting elementToReturn to null, then you can set elementToReturn to false directly after while loop. 如果在将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;    
  } 
} 

Modify your code like following 如下修改您的代码

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

Here is a shorter version of your code which does the same thing. 这是执行相同操作的代码的较短版本。 I assume that usedElements is a Set as duplicates are not allowed. 我假设usedElements是一个Set,因为不允许重复。

public Proxy getNextElement() {
    if (proxiesToUse == null) return getNextProxy();
    for (Element element : elementToUse)
        if (usedElements.add(element)) return element;
    return null;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM