Die Anleitung zu Java ArrayList
1. ArrayList
ArrayList ist eine Klasse, die die Interface List implementiert und alle Funktionen von List unterstützt, einschließlich optionaler Funktionen. Grundsätzlich verwaltet eine ArrayList ein Array zum Speichern seiner Elemente, das durch ein anderes Array größerer Länge ersetzt werden kann, wenn die Anzahl der ArrayList zunimmt.
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
- Collection
- List
- LinkedList
- CopyOnWriteArrayList
Unten sind sie die Eigenschaften von ArrayList:
- Mit ArrayList können doppelte und die Elemente null enthalten sein.
- Mit ArrayList behält die Einfügereihenfolge der Elemente bei.
- ArrayList ist nicht synchronisiert (non synchronized), daher muss es synchronisiert werden, um in einer Umwelt Multithreading verwendet zu werden.
- ArrayList ermöglicht den wahlfreien Zugriff auf die Elemente basierend auf dem Index.
- Der Vorgang in ArrayList ist etwas langsamer als in LinkedList (weitere Erläuterungen finden Sie im Funktionsprinzip von ArrayList).
ArrayList ist ziemlich ähnlich mit Vector, außer dass es asynchron ist. In einer Umwelt Multithreading sollte es mit der Methode Collections.synchronizedList umbrochen werden.
ArrayList<String> arrayList = new ArrayList<String>();
List<String> syncList = Collections.synchronizedList(arrayList);
CopyOnWriteArrayList ist eine thread-safe Variante von ArrayList, die Sie möglicherweise verwenden möchten:
ArrayList constructors:
ArrayList() | Erstellen Sie ein leeres Objekt ArrayList mit einem internen Array mit einer Anfangskapazität von 10 Elementen. |
ArrayList(Collection<? extends E> c) | Erstellen Sie ein Objekt ArrayList , das alle Elemente der angegenben Collection enthält. Die Reihenfolge der Elemente wird vom Iterator der Collection festgelegt. |
ArrayList(int initialCapacity) | Erstellen Sie ein leeres Objekt ArrayList mit einem internen Array der angegebenen Anfangskapazität. |
2. Wie speichert ArrayList die Elemente?
ArrayList verwaltet ein Array von Objekten. Alle Aktionen zum Hinzufügen, Einfügen oder Entfernen eines Elements aus ArrayList führen zu einer Aktionen zum Zuweisen (oder Aktualisieren) von Werten zu den anderen Elementen vom Arrays, die sich auf viele Elemente von Arrays auswirken können.
arrayList.add(X)
Wenn Sie ein Element in ArrayList hinfügen, wird es einem Element vom Array im Index arrayList.size() zugewiesen.
arrayList.add(idx,X)
Wenn Sie ein Element in ArrayList einfügen, müssen viele Elemente im Array ihre Werte aktualisieren.
arrayList.remove(idx)
Das Entfernen eines Elements am Index idx aus ArrayList führt auch dazu, dass viele Elemente vom Array mit neuen Wert aktualisieren werden.
ArrayList ersetzt das von ihm verwaltete Array durch ein neues Array mit einer größeren Länge, wenn die Anzahl der hinzugefügten Elemenete größer als die Länge des aktuellen Arrays ist.
3. Examples
Zum Beispiel: Verwenden Sie ArrayList in die Umwelt Multithreading:
ArrayList_sync.java
package org.o7planning.arraylist.ex;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayList_sync {
public static void main(String[] args) throws InterruptedException {
new ArrayList_sync();
}
public ArrayList_sync() throws InterruptedException {
ArrayList<String> arrayList = new ArrayList<String>();
List<String> syncList = Collections.synchronizedList(arrayList);
ThreadA threadA = new ThreadA(syncList);
ThreadB threadB = new ThreadB(syncList);
threadA.start();
threadB.start();
threadA.join();
threadB.join();
for(String s: syncList) {
System.out.println(s);
}
}
class ThreadA extends Thread {
private List<String> list;
public ThreadA(List<String> list) {
this.list = list;
}
@Override
public void run() {
for(int i= 0; i< 1000; i++) {
this.list.add("A "+ i);
}
}
}
class ThreadB extends Thread {
private List<String> list;
public ThreadB(List<String> list) {
this.list = list;
}
@Override
public void run() {
for(int i= 0; i< 1000; i++) {
this.list.add("B "+ i);
}
}
}
}
Output:
...
A 938
B 898
A 939
B 899
A 940
B 900
A 941
B 901
A 942
...
ArrayList unterstütz alle in die Interface List angegebenen Funktionen, einschließlich optionaler Funktionen. Sie können die besten Beispiele für ArrayList im folgenden Artikel finden:
Die Anleitungen Java Collections Framework
- Die Anleitung zu Java PriorityBlockingQueue
- Die Anleitung zu Java Collections Framework
- Die Anleitung zu Java SortedSet
- Die Anleitung zu Java List
- Die Anleitung zu Java Iterator
- Die Anleitung zu Java NavigableSet
- Die Anleitung zu Java ListIterator
- Die Anleitung zu Java ArrayList
- Die Anleitung zu Java CopyOnWriteArrayList
- Die Anleitung zu Java LinkedList
- Die Anleitung zu Java Set
- Die Anleitung zu Java TreeSet
- Die Anleitung zu Java CopyOnWriteArraySet
- Die Anleitung zu Java Queue
- Die Anleitung zu Java Deque
- Die Anleitung zu Java IdentityHashMap
- Die Anleitung zu Java WeakHashMap
- Die Anleitung zu Java Map
- Die Anleitung zu Java SortedMap
- Die Anleitung zu Java NavigableMap
- Die Anleitung zu Java HashMap
- Die Anleitung zu Java TreeMap
- Die Anleitung zu Java PriorityQueue
- Die Anleitung zu Java BlockingQueue
- Die Anleitung zu Java ArrayBlockingQueue
- Die Anleitung zu Java TransferQueue
Show More