Есть 2 for-loops
и 2 if
условия.Это может быть заменено внешним и внутренним потоком.
Option<IChangelistSummary> summary = bugChanges.stream()
.filter(bugChange -> server
.getChangelist(bugChange.getId())
.getFiles(true)
.stream()
.anyMatch( spec ->
spec.getDepotPathString()
.contains("release1234")
)
)
.forEach(bug ->
System.out.println(
"bugChange="+ bug.getId() + "=="+ bug.getDescription())
)
);
Это выглядит немного некрасиво.Во внешнем потоке мы исследуем bugChange
элементов и оставляем только те элементы, которые удовлетворяют фильтру Predicate
.Теперь во внутреннем потоке мы проверяем, содержат ли файлы, связанные с текущей bug id
строкой "release1234"
.И наконец мы печатаем результаты.