cable545 Geschrieben 25. April 2010 Teilen Geschrieben 25. April 2010 hallo, ich hab ein kleines problem. ich hab drei ArrayLists in welche sich einige Objekte befinden. ich möchte nun schauen ob sich ein objekt aus einer ArrayList auch in den anderen beiden ArrayLists befindet. ich hab das jetzt irgendwie mit geschachtelten schleifen und der equals methode versucht. nur verlier ich da dann irgendwann den überblick. hat da vieleicht jemand eine besondere effiziente lösung oder einen ansatz? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 25. April 2010 Teilen Geschrieben 25. April 2010 (bearbeitet) Ich würde hier erst einmal die Frage stellen, ob eine ArrayList überhaupt die richtige Datenstruktur für das Vorhaben ist. Aufgrund der Informationen würde ich wohl eher zu einer Hashmap/IdentityHashMap mit ggf passender Hash-Implementierung raten. Eine Implementierung via Arraylist ist zu dem ein O(n^2) Algorithmus, denn wenn jedes Objekt mit jedem verglichen werden muss, muss man mind. mit 2 Schleifen arbeiten, wobei man das dritte Array direkt in der innersten Schleife mit vergleichen kann und ggf fehlende Elemente nachiteriert, macht also im Limit O(n^2). Somit würde eine andere Datenstruktur sinnvoll sein Bearbeitet 25. April 2010 von flashpixx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 26. April 2010 Teilen Geschrieben 26. April 2010 Um noch mal am Anfang zu beginnen: was hast Du, was willst Du, und was ist Dein Problem. Aus Deiner Problembeschreibung kann ich nicht erkennen, was *genau* bei Dir nicht funktioniert. Im Allgemeinen ist es wichtig, dass bei Objektvergleichen (inhaltlich) die Methoden equals() und hashCode korrekt überschrieben sind. Erster Google Hit: AngelikaLanger.com - Implementing the hashCode() Method - Angelika Langer Training/Consulting Schöne Grüße, Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
elSusto Geschrieben 26. April 2010 Teilen Geschrieben 26. April 2010 Hi, ArrayList (Java 2 Platform SE v1.4.2) Mit dieser Methode könntest du gucken ob ein Object in der Liste enthalten ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. April 2010 Teilen Geschrieben 26. April 2010 Mit dieser Methode könntest du gucken ob ein Object in der Liste enthalten ist. Die contains-Methode wird aber auch das Array bis zum Ende bzw bis zu dem Objekt das gesucht wurde durchlaufen, d.h. worst-case sind es auch n Durchläufe. Für eine bestehende Arraylist aus m Elementen macht das dann m contains-Aufrufe, d.h. O(n*m) im Limit also ein O(n^2) Algorithmus. Eine Arraylist ist keine geordnete Datenstruktur, darum ist eine entsprechende Suche eben immer nur möglich, wenn man alle Elemente durchläuft. Wie kingofbrain schrieb, hash-Methode bzw equals-Methode passend überladen und dann eine geordnete Datenstruktur verwenden, wie z.B. eine HashMap in der die Suchalgorithmen effizienter implementiert sind. Sonst schließe ich mich kingofbrain an, dass der OP bitte das Problem genauer definiert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
elSusto Geschrieben 26. April 2010 Teilen Geschrieben 26. April 2010 Ja klar, da bin ich eurer Meinung, aber falls er unbedingt die Liste nutzen möchte, kennt er jetzt die Methode damit er die schleifen nicht alle selbst schreiben muss. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
cable545 Geschrieben 26. April 2010 Autor Teilen Geschrieben 26. April 2010 ok, dann hier die genaue beschreibung.. ich hab ungefähr 30 Person-Objekte. diese objekte haben die attribute vorname, nachname, Plz und geburtsdatum. ich hab jetzt die 30 person-objekte in drei mengen unterteilt und in eine jeweilige ArrayList gepackt. also hab ich drei ArrayLists mit den namen studenten, verwandte und sportfreunde. nun ist es aber so, dass manche personen-objekte in mehreren mengen...also arraylists vertreten sind. und jetzt möchte ich also alle person-objekte auflisten(also mit den attributen), inklusive einer information in welcher menge(arraylist) sich dieses objekt überall befindet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 26. April 2010 Teilen Geschrieben 26. April 2010 Gut, jetzt wissen, wir, was Du willst. Fehlt noch, was Du hast, was daran falsch ist und was Du erwartest. Ansonsten bleibts bei den allgemeinen Tipps "Datenstruktur" und "equals() / hashCode()". Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 26. April 2010 Teilen Geschrieben 26. April 2010 Hallo so wie ich es verstehe, geben diese 3 Kategorien die Stellung der Personen zu einer anderen Person an. Hierbei kann es ja durchaus sein, dass eine Person in mehreren dieser Mengen enthalten ist, also z.B. wenn sie sowohl Verwandter als auch Sportfreund ist. Ich würde an dieser Stelle einmal ernsthaft überlegen, im Sinne der OOA/OOD dieses als Rollen abzubilden, so dass jede Person genau einmal existiert aber eine Vielzahl von Rollen einnehmen kann. Das spart auch wieder Aufwand und verhindert Probleme, wenn sich z.B. durch Heirat, Umzug etc. die Personenattribute ändern. Gruß Martin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.