Erkennen Sie doppelte Gruppen in stream

Ich möchte sicherstellen, dass alle Nummern in der Liste zusammengefasst sind. Lassen Sie mich dies an Beispielen erläutern:

{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

So erhalte ich den Stream:

IntStream.of(numbers)
    ...

Nun muss ich für "OK" -Beispiele true übergeben oder zurückgeben und @ werfAssertionError oder bei "Bad" -Beispielen false zurückgeben. Wie kann ich das mit Stream API machen?

Hier ist meine aktuelle Lösung mit zusätzlichenSet erstellt:

Set<Integer> previousNumbers = new HashSet<>();
IntStream.of(numbers)
        .reduce(null, (previousNumber, currentNumber) -> {
                    if (currentNumber == previousNumber) {
                        assertThat(previousNumbers).doesNotContain(currentNumber);
                        previousNumbers.add(currentNumber);
                    }
                    return currentNumber;
                }
        );

Antworten auf die Frage(6)

Ihre Antwort auf die Frage