2017-03-10 6 views
0

Ich versuche, die Kreuzung und die Vereinigung zwischen zwei Sequenzen zu finden, die verwandte Klassen haben. Um dies zu erreichen, möchte ich in der Lage sein, eine benutzerdefinierte Gleichheitsprüfung für die Schnittpunktfunktion bereitzustellen. Ich möchte nicht die Gleich- und Hashcode-Funktion außer Kraft setzen. Ich möchte eine Schnittpunktfunktion, die auch eine Funktion auf Gleichheit prüft.Benutzerdefinierte Gleichheit für Kreuzung

Gibt es einen sauberen Weg, dies zu erreichen, ohne eine benutzerdefinierte Schnitt- und Vereinigungsfunktion zu schreiben?

+2

Zeigen Sie uns einige, die Sie bisher versucht haben. Ohne Code kann ich nur raten was du willst. – sebszyller

Antwort

0

Was Sie fragen, wird wahrscheinlich nicht von der Standardbibliothek unterstützt. Es ist ziemlich einfach, Ihre eigenen Schnitt-/Vereinigungsmethoden zu schreiben. Eine andere Möglichkeit ist, Ihre Instanzen zu wickeln, wie so:

class Wrapper[E](val wrapped: E) { 
    // Override equals/hashCode here 
} 

Sie berechnen dann die Vereinigung/Kreuzung von Wrapper[E] und dann unionOfWrappers.map(_.wrapped) verwenden zu bekommen, was Sie wollten. Natürlich werden dadurch viele Wrapper Instanzen erstellt und Garbage Collection gesammelt.