У меня есть список элементов, которые могут содержать скобки (в их свойстве value
). Этот код создает список сбалансированных вхождений (открывающие скобки - закрывающие скобки) в каждом элементе, а затем находит первый индекс, в котором это сальдо меньше или равно 0 (т. Е. Где все круглые скобки сначала закрыты).
List<Integer> parenthesisBalancePerElement = paragraphElements.stream()
.map(paragraphElement -> checkBalancedOccurences(paragraphElement, "(", ")"))
.collect(Collectors.toList());
int balance = 0;
int firstIndexWhereClosed;
for (firstIndexWhereClosed = 0; firstIndexWhereClosed < parenthesisBalancePerElement.size(); firstIndexWhereClosed++) {
int elementBalance = parenthesisBalancePerElement.get(firstIndexWhereClosed);
balance += elementBalance;
if (balance <= 0) {
break;
}
// use firstIndexWhereClosed
}
Во второй части кода используется цикл for, и его сложнее читать, чем первый IMO. Есть ли более чистый способ сделать это, возможно, с помощью потоков?