Moin Moin!
hi,
bei "arraylist" hatte ich eine heapspace exeption.
Noch einmal: Denkst Du, dass eine Liste die optimale Datenstruktur für deine Daten ist?
Die Exception dürfte in der Implementation von ArrayList begründet sein, was vermutlich beim Wachsen ein neues Array anlegt und die Daten des alten Arrays rüberkopiert. Ist das Array größer als der freie Heap, kann kein neues, größeres Array mehr angelegt werden. Mit anderen Worten: Im Worst Case kann ArrayList nur den halben zur Verfügung stehenden Speicher nutzen.
Java hat hier ein Philosophie-Problem: Dem Programmierer werden alle möglichen Werkzeuge zur Verfügung gestellt, jedes hoch spezialisiert und jedes mit individuellen Einschränkungen. Es ist Job des Programmierers, diese Details zu kennen (bzw. in der Doku nachzulesen) und das zur jeweiligen Anforderung des Projekts passende Werkzeug auszuwählen. Andere Sprachen nehmen dem Programmierer diesen Job ab, es gibt dann z.B. stumpf ein generisches Ding namens Array, das so ziemlich alles erschlägt, was Java hinter Arrays, Listen, Vektoren und Kollektionen versteckt. Allerdings ist der Maschinencode hinter nicht für jeden Anwendungsfall optimal, und der Programmierer hat selten Möglichkeiten, an Implementationsdetails zu drehen. Dafür hat er Zeit, sich um die wirklich wichtigen Dinge zu kümmern, statt über 20 verschiedenen mehr oder weniger geeigneten Pseudo-Array-Konstrukten zu brüten.
ich möchte herausfinden, welche "NodeData", welche anderen "NodeData" in meiner markovkette erreichen können. diese NodeData speichere ich dann in der liste von NodeData als nachbar.
[Deine Shift-Taste setzt aus.]
Deine Nodes haben eindeutige IDs, richtig?
Und für eine Verbindung zwischen zwei Nodes kannst Du auch IDs vergeben, im einfachsten Fall abgeleitet aus den beiden Nodes.
Wenn Du nach diesen IDs suchen willst, ist eine unsortierte Liste so ziemlich der Worst Case. Natürlich ist sie schnell aufgebaut, aber katastrophal bei der Suche.
Sortiert kombiniert mit einer binären Suche wird's schon schneller. Du mußt einmalig beim Aufbau der Liste etwas mehr Aufwand treiben, den Du dann aber bei der Suche wiederholt einsparst.
Bäume solltest Du auch in Betracht ziehen.
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".