2 Stimmen

ArrayList in Java beim Speichern großer Objekte

Ich bin auf diese Interviewfrage zu ArrayList in Java gestoßen und finde sie ziemlich interessant, aber ich habe keine Ahnung, wie ich sie beantworten soll:

Auf welche Dinge sollte man achten, wenn man ArrayList verwendet, um große Objekte zu speichern?

Ich frage mich, ob wir diese Frage im Hinblick auf Zeit-/Platzkomplexität beantworten sollten?

Danke

8voto

Karthik T Punkte 30498

Alle Objekte in Java werden als Referenzen in Containern und Variablen usw. gespeichert, sodass in C++-Begriffen alle Container nur Zeiger auf die Objekte speichern. In einer solchen Situation sollte die Größe des Objekts für die meisten, wenn nicht alle Anwendungsfälle irrelevant sein.

0voto

rajesh Punkte 3197

Intern verwendet ArrayList Object[]. Sobald es die maximale Kapazität erreicht hat, erstellt es ein neues Array mit der Größe 1,5-mal des Originals und kopiert vom alten Array in das neue Array. Möglicherweise wollte der Interviewer die Kosten dieses Kopiervorgangs mit großen Objekten überprüfen

ArrayList: wie erhöht sich die Größe?

Überprüfen Sie ensureCapacity() - http://www.docjar.com/html/api/java/util/ArrayList.java.html

0voto

user560401 Punkte 21

ArrayList unterstützt dynamische Arrays, die bei Bedarf wachsen können. In Java haben Arrays eine feste Länge, das bedeutet, dass sie nach der Erstellung nicht mehr wachsen oder schrumpfen können, was bedeutet, dass Sie im Voraus wissen müssen, wie viele Elemente ein Array halten wird. Aber manchmal kennen Sie die Größe erst zur Laufzeit, sodass wir in dieser Situation ArrayList verwendet haben. ArrayList kann dynamisch vergrößert oder verkleinert werden. Array-Listen werden mit einer anfänglichen Größe erstellt. Wenn diese Größe überschritten wird, wird die Sammlung automatisch vergrößert. Wenn Objekte entfernt werden, kann das Array verkleinert werden. Außerdem beachten Sie, dass Arraylist nur Objekte speichert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X