Ich habe einige Elemente zu vereinfachen, die somit durch andere Elemente ersetzt werden eine Ersatzkette zu schaffen:Logic Artikel Ersatzkette
+---------------+------------------+ | Replaced Item | Replacement Item | +---------------+------------------+ | A | B | | B | C | | C | D | | G | H | +---------------+------------------+
Wenn wir vereinfachen es Beziehung Ketten wir als
A gefunden -> B - > C -> D
& G -> H
Schließlich möchte ich Ausgabe als vereinfachte Tabelle wie erreichen:
+---------------+------------------+ | Replaced Item | Replacement Item | +---------------+------------------+ | A | D | | B | D | | C | D | | G | H | +---------------+------------------+
Meine Frage ist: Ist eine vorhandene API oder Algorithmus diese Art von Ketten Vereinfachung Problem in JavaScript/Java zu lösen/Rubin usw.
Was ich versucht ist: Ich dachte, ich könnte lösen es unter Verwendung von Java-Referenzen. Wenn wir einen Verweis auf einen anderen Verweis zuweisen, so verweisen beide Referenzen auf dasselbe Objekt. Daher wird die Objekt-ID identisch sein. Ich habe mehrere Referenzen erstellt als:
String ref1 = "A";
String ref2 = "B";
String ref3 = "C";
String ref4 = "D";
String ref5 = "G";
String ref6 = "H";
bekam ich Hashcodes von ref.hashCode() Methode.
//A = 65
//B = 66
//C = 67
//D = 68
//E = 71
//F = 72
//----
// Now A --> B means
ref2 = ref1;
//A = 65
//B = 65
//C = 67
//D = 68
//E = 71
//F = 72
//----
// Now B --> C means
ref3 = ref2;
//A = 65
//B = 65
//C = 65
//D = 68
//E = 71
//F = 72
//----
// Now C --> D means
ref4 = ref3;
//A = 65
//B = 65
//C = 65
//D = 65
//E = 71
//F = 72
//----
// Now C --> D means
ref6 = ref5;
//A = 65
//B = 65
//C = 65
//D = 65
//E = 71
//F = 71
//----
Jetzt müsste ich durch alle Verweise auf laufen und setzen Hashcodes in eine gesetzt die eindeutige Werte enthält. also habe ich nur 65 und 71 bekommen.
Jetzt, 65 -> A, B, C, D und präzedenzweise D ist das letzte Element. 71 -> G, H Vorrang H ist das letzte Element.
so schließe ich, könnte es als:
+---------------+------------------+ | Replaced Item | Replacement Item | +---------------+------------------+ | A | D | | B | D | | C | D | | G | H | +---------------+------------------+
Erm ... Warum nicht einfach Erstellen Sie jede Kette als Liste und verwenden Sie dann das erste und letzte Element als neue Tabelle? –
(Mit einem Zyklus überprüfen .....) –
Also, Apoorv, beantwortet meine Antwort Ihre Frage? – Cerbrus