Как установить значение в ноль, когда Arraylist исчерпан.? - PullRequest
0 голосов
/ 06 января 2011

Я работаю на 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() будет ложным, но проблема, которую я получаю, связана с циклом while, когда itr.hasNext() становится ложным, последнее значение, установленное для elementToReturn, остается без изменений и возвращается как но я хочу вернуть ноль, если в списке elementsToUse больше нет элементов ..

Ответы [ 4 ]

1 голос
/ 06 января 2011

Просто верните значения по-другому

   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;
        }
    }
0 голосов
/ 06 января 2011

Вот более короткая версия вашего кода, которая делает то же самое. Я предполагаю, что usedElements - это Set, поскольку дубликаты не допускаются.

public Proxy getNextElement() {
    if (proxiesToUse == null) return getNextProxy();
    for (Element element : elementToUse)
        if (usedElements.add(element)) return element;
    return null;
}
0 голосов
/ 06 января 2011

Измените ваш код следующим образом

        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;
        }
      }
0 голосов
/ 06 января 2011

Если нет условия для проверки перед установкой elementToReturn на ноль, то вы можете установить elementToReturn в false сразу после цикла while.

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;    
  } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...