2014-01-17 6 views
4

У меня есть следующий код. В первом я попытался установить значения в списке под названием «unavailable». Далее, для каждого из них я должен создать цикл в списке domainStr минус, недоступный. Как мне это сделать?Список <String> минус Список <String>

public Result execute(List<String> domainsStr) { 

     Result result = new Result();  

     try { 
      List<String> domains = domainService.findByNames(domainsStr); 
      result.setUnavailable(domains); 
     } catch (Exception e) { 
      logger.error(e.getMessage(), e); 
     } 

     for (String domain : domainsStr) { 
     ...... 
     } 
     return result; 
    } 
    public static class Result { 

    private List<String> unavailable = new ArrayList<>(); 


    public List<String> getUnavailable() { 
     return unavailable; 
    } 

    public void setUnavailable(List<String> unavailable) { 
     this.unavailable = unavailable; 
    } 

} 

ответ

1

Я должен произвести цикл по списку domainStr минус недоступный.

Если я правильно понял, я думаю, что вы ищете метод removeAll:

Удаляет из этого списка все элементы, которые содержатся в указанной коллекции (дополнительная работа).

domainsStr.removeAll(result.getUnavailable()); 
for (String domain : domainsStr) { 

} 

Если вы хотите, чтобы domainsStr без изменений, вы можете создать временный список и perfom этих операций на нем.

1
List<String> tempList = new ArrayList<String>(domainsStr); 
tempList.removeAll(result.getUnavailable()); 
for(String domain : tempList){ 
    ..... 

Я помещаю их в список искушения, чтобы вы не потеряли элементы в списке domainsStr.

7

removeAll(Collection c) - это функция, которая была бы наиболее полезной для вас. Сказав это, это будет работать правильно, только если у вас есть метод equals, правильно определенный для вашего объекта Domain. В этом случае это String, так что это не имеет значения. Но, чтобы помнить об этом.

так просто сказать, domainsStr.removeAll(result.getUnavailable());

Кроме того, если класс Result является статическим, поэтому создание нового объекта здесь?

Result result = new Result(); 

Это result.setUnavailable(domains); может быть изменен на Result.setUnavailable(domains);

Смежные вопросы