я написал кусок кода и интересно, как я могу написать это более элегантно, используя потоки здесь:Как написать это с помощью потоков? Java 8
public boolean possibleToAddTask(LocalDate taskDate, final String username) {
List<Task> userTasklist = find(username).getTaskList();
for(Task task : userTasklist) {
if(task.getDate().equals(taskDate)){
return false;
}
}
return true;
}
Вот - некоторые булево возвращается из метода. Если указанная дата уже существует в некоторой задаче она возвращает ложных, в противном случае истинный (так возвращаемый тип отвечает на вопрос, поставленный в названии метода :))
Я пытался с помощью фильтров на потоках, но он работал только для в то время, а затем модульные тесты дали мне неожиданные результаты, поэтому я удалил его и написал его как «Верхний». Теперь я хочу, чтобы украсить его
раньше это было так:
public boolean possibleToAddTask(LocalDate taskDate, final String username) {
List<Task> userTasklist = find(username).getTaskList();
try {
userTasklist.stream().filter(n -> n.getDate().equals(taskDate)).findFirst().get();
return true;
} catch (NoSuchElementException e) {
return false;
}
}
заранее спасибо :)
Хм ... Может быть, это немного лучше, так как он более точно имитирует оригинальную логику. – kuujo
@lusiak Кажется, это идеальное решение, однако модульный тест по-прежнему возвращает OK для безрезультатных решений, а FAILS для потоковых решений – azalut
Я, вероятно, знаю почему. Просто отрицайте, какой поток возвращается. –