361 Stimmen

Anfangsgröße für die ArrayList

Sie können die anfängliche Größe für eine ArrayList festlegen, indem Sie

ArrayList<Integer> arr=new ArrayList<Integer>(10);

Sie können jedoch nicht

arr.add(5, 10);

weil es eine Ausnahme außerhalb der Grenzen verursacht.

Was nützt es, eine Anfangsgröße festzulegen, wenn man nicht auf den zugewiesenen Platz zugreifen kann?

Die Additionsfunktion ist definiert als add(int index, Object element) Ich werde also nicht in den Index 10 aufgenommen.

10voto

user3692587 Punkte 101

Wenn Sie die Elemente mit Index hinzufügen möchten, können Sie stattdessen ein Array verwenden.

    String [] test = new String[length];
    test[0] = "add";

7voto

Hrishikesh Kadam Punkte 32581

Das könnte jemandem helfen -

ArrayList<Integer> integerArrayList = new ArrayList<>(Arrays.asList(new Integer[10]));

7voto

H.T. Koo Punkte 120

Ich bin spät dran, aber nach Java 8 Ich persönlich finde diesen folgenden Ansatz mit dem Stream API prägnanter und kann eine Alternative sein zu die akzeptierte Antwort .

Zum Beispiel,

Arrays.stream(new int[size]).boxed().collect(Collectors.toList())

何所 size ist die gewünschte List Größe und ohne der hier genannte Nachteil alle Elemente in der List werden initialisiert als 0 .

(Ich habe eine schnelle Suche durchgeführt und nichts gefunden stream in den veröffentlichten Antworten - bitte lassen Sie mich wissen, wenn diese Antwort überflüssig ist, damit ich sie entfernen kann)

6voto

quaylar Punkte 2529

Ich denke, eine genaue Antwort auf Ihre Frage wäre:

Das Festlegen einer Anfangsgröße für eine ArrayList reduziert die Anzahl der internen Speicherneuzuweisungen. Die Liste wird durch ein Array unterstützt. Wenn Sie z.B. eine Anfangsgröße von 0 angeben, muss das interne Array bereits beim ersten Einfügen eines Elementes in der Größe verändert werden. Wenn Sie eine ungefähre Vorstellung davon haben, wie viele Elemente Ihre Liste enthalten wird, können Sie durch die Angabe der Anfangskapazität die Anzahl der Neuzuweisungen von Speicherplatz während der Verwendung der Liste verringern.

4voto

unk Punkte 119

Ich konfrontiert mit dem ähnlichen Problem, und nur zu wissen, die arrayList ist eine Größe-Array-Implementierung der List-Schnittstelle, ich erwarte auch, dass Sie Element an jedem beliebigen Punkt hinzufügen können, aber zumindest die Möglichkeit haben, die anfängliche Größe zu definieren. Wie auch immer, Sie können zuerst ein Array erstellen und dieses in eine Liste konvertieren:

  int index = 5;
  int size = 10;

  Integer[] array = new Integer[size];
  array[index] = value;
  ...
  List<Integer> list = Arrays.asList(array);

oder

  List<Integer> list = Arrays.asList(new Integer[size]);
  list.set(index, value);

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