Beim Versuch, Polynome zu modellieren, insbesondere deren Multiplikation, stoße ich auf das folgende Problem. Bei der Multiplikation werden die einzelnen Monome der beiden Polynome multipliziert und es kann natürlich passieren, dass ich (3x^2y + 5xy^2) * (x + y) habe. Das Ergebnis enthält 3x^2 y^2 und 5 x^2 y^2, die ich sofort durch Addition kombinieren möchte.Karte, die es ermöglicht, den equals-Komparator und die Hashing-Funktion getrennt zu liefern
Natürlich würde ich gerne den Teil x^2 y^2 des Monomials als Schlüssel in einer (Hash) Map verwenden, um die verschiedenen Koeffizienten (3 und 5 im Beispiel) zu addieren. Aber das Monom-Objekt, wie ich es mir vorstelle, sollte natürlich auch den Koeffizienten enthalten, der nicht Teil des Kartenschlüssels sein sollte.
Natürlich könnte ich equals/hashcode des monomial object schreiben, so dass sie den Koeffizienten ignorieren. Aber das fühlt sich einfach so falsch an, denn mathematisch ist ein Monom eindeutig nur gleich einem anderen, wenn auch die Koeffizienten gleich sind.
Die Einführung eines koeffizientenfreien monomalen Objekts für Zwischenoperationen sieht auch nicht richtig aus.
Anstatt die Karte zu verwenden, könnte ich eine Liste verwenden und eine binäre Suche mit einem dedizierten Komparator verwenden, der den Koeffizienten ignoriert.
Kurz, um eine Karte zu implementieren, die nicht den gleichen/hashcode der Schlüssel verwendet, sondern einen dedizierten, gibt es bessere Ideen, wie man die Monome zusammenfließen kann?
Natürlich ist die Verwendung eines Wrappers eine Möglichkeit, aber das halte ich für zu viel Aufwand, wenn nicht für die Performance (nicht früh optimieren), konzeptionell ist es meiner Meinung nach aber zu viel. – Harald
Dann versuchen Sie es mit einer TreeMap, aber das sollte eine TreeMap sein> oder Sie sollten nicht vergessen, den Koeffizienten zu summieren :) –
NoDataFound