Stellen Sie sicher, dass zwei nicht ausgerichtete Sequenzen so genau wie möglich übereinstimmen (Java)

Es gibt einige Bestätigungen für die Übereinstimmung zwischen Sequenzen, deren Reihenfolge unbekannt ist.

Von DB erhaltene Arrays sind oft unsicher. Ich fragte mich, ob es möglich wäre, eine solche Array-Übereinstimmungsprüfung mit so wenig Code wie möglich auszudrücken. Ich möchte es ordentlich machen, also sollte die Situation wie folgt sein

Muss ein Typ sein, der nach Stream.sorted () sortiert werden kann.

Einfache Typen wie String und Integer können mit "Stream.sorted ()" sortiert werden. Dies ist jedoch nicht der Fall. Es gibt auch kein Problem, wenn Sie Composer definieren.

Es wurde überprüft, dass keine Nullen enthalten sind

NullPointerException.

Erhalten Sie nur Übereinstimmungen, Nichtübereinstimmungen

Unnötig zu sagen hier

Quellcode

Sample.java


public boolean isEqualsList(List<?> a, List<?> b){
    return Arrays.equals(a.stream().sorted().toArray(), b.stream().sorted().toArray());
}

Bonus

Selbst wenn Sie einen Komparator definieren, scheint er kaum ordentlich zu sein.

Sample.java


public boolean isEqualsList(Comparator comp, List<?> a, List<?> b){
    return Arrays.equals(a.stream().sorted(comp).toArray(), b.stream().sorted(comp).toArray());
}

Nachwort

Ich konnte in einem Satz schreiben. Es ist unangenehm, dass toArray () Object [] ist, aber es ist nur eine Übereinstimmungsprüfung, also gibt es kein Problem.

Recommended Posts

Stellen Sie sicher, dass zwei nicht ausgerichtete Sequenzen so genau wie möglich übereinstimmen (Java)
Vermeiden Sie Java Calendar so weit wie möglich
Java, Arrays für Anfänger
[Verarbeitung × Java] Verwendung von Arrays
So überprüfen Sie, ob Java auf einem Mac installiert ist