Я хочу, чтобы все числа в списке группировались вместе. Позвольте мне объяснить это на примерах:
{1, 1, 1, 2, 2} // OK, two distinct groups
{1, 1, 2, 2, 1, 1} // Bad, two groups with "1"
{1, 2, 3, 4} // OK, 4 distinct groups of size 1
{1, 1, 1, 1} // OK, 1 group
{3, 4, 3} // Bad, two groups with "3"
{99, -99, 99} // Bad, two groups with "99"
{} // OK, no groups
Вот как я получаю поток:
IntStream.of(numbers)
...
Теперь мне нужно передать или вернуть true для примеров "ОК" и бросить AssertionError
или вернуть false на примерах "Плохие". Как я могу это сделать с помощью Stream API?
Здесь мое текущее решение с дополнительным Set
создало:
Set<Integer> previousNumbers = new HashSet<>();
IntStream.of(numbers)
.reduce(null, (previousNumber, currentNumber) -> {
if (currentNumber == previousNumber) {
assertThat(previousNumbers).doesNotContain(currentNumber);
previousNumbers.add(currentNumber);
}
return currentNumber;
}
);