Wenn wir eine ArrayList
die Größe der Array-Liste initialisieren würde zunächst 0 sein. Deshalb ist der Code
for(int i=0;i<numo.size() ;i++) {
numo.add(i);
}
, wenn sie mit numo.size()
druckt nichts laufen.
ARRAY LIST JAVA
1. Was ist eine Arraylist?
Die Array-Liste enthält einen Array-Puffer, in dem die Elemente der ArrayList gespeichert sind. Die Kapazität der ArrayList ist die Länge dieses Array-Puffers.
2. Was passiert, wenn ich während der Array-Liste intializtion jede Größe nicht bieten?
Jede leere ArrayList wird um DEFAULT_CAPACITY
erweitert, wenn das erste Element hinzugefügt wird.
DEFAULT_CAPACITY value of an array list is 10
3.What geschieht während der folgenden intialization?
ArrayList<Integer> numo = new ArrayList<Integer>();
Dies würde Array-Liste Konstruktor aufrufen, die wie
private static final Object[] EMPTY_ELEMENTDATA = {};
/**
* This would construct an empty list with an initial capacity of ten.
*/
public ArrayList() {
super();
this.elementData = EMPTY_ELEMENTDATA;
}
3.How meine Werte eingefügt werden in Array-Liste sein würde?
i] Diese prüft, ob Kapazität der internen Array und fügt das Element in dem Array Puffer innerhalb dieser Gruppe.
/*
Appends the specified element to the end of this list
e - element to be appended to this list
returns - true if element is added successfully - false otherwise
*/
public boolean add(E e) {
ensureCapacityInternal(size + 1); //Increments modCount!!
elementData[size++] = e;
return true;
}
4.Wie wird die Array-Kapazität (Array hier bezieht sich auf das Objekt-Array innerhalb der Array-Liste) intern erhöht?
i] Ensuriy Kapazität
private void ensureCapacityInternal(int minCapacity) {
if (elementData == EMPTY_ELEMENTDATA) {
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
}
ensureExplicitCapacity(minCapacity);
}
private void ensureExplicitCapacity(int minCapacity) {
modCount++;
// overflow-conscious code
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}
ii] Wenn die Kapazität des Arrays nicht genug ist, das neue Element zu halten, - dann die Größe des Arrays aufgewachsen wird.
/**
* Increases the capacity to ensure that it can hold at least the
* number of elements specified by the minimum capacity argument.
*
* @param minCapacity the desired minimum capacity
*/
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
5. Ist mein Arraylist Überlauf bewusst?
Ja
6. Wann wird ein Arraylist OutOfMemoryError()
wirft?
Wenn die angeforderte Feldgröße überschreitet VM Grenze
7. Was ist die maximale Größe einer Arraylist?
Die maximale Größe des zuzuweisenden Arrays ist (Integer.MAX_VALUE - 8) dh; (2^31 - 9)
- Einige VMs reservieren einige Headerwörter in einem Array. Versuche, größere Arrays zuzuweisen, können zu OutOfMemoryError führen: Die angeforderte Array-Größe überschreitet das VM-Limit.
Hier ist der Quellcode von ArrayList.java
in der ersten Schleife für Ihre numo.size() == 0, so gibt es in der Numo –
Anfangsgröße Numo kein Element hinzugefügt ist 0 daher die erste Schleife wird nie ausgeführt, also nichts hinzugefügt – ScanQR
Ich habe es! Vielen Dank – SJK