ArrayList est déclaré comme suit.
ArrayList
ArrayListSample.java
ArrayList<Integer> arrayList = new ArrayList<Integer>(); //Aucune capacité initiale spécifiée
ArrayList<Integer> arrayList = new ArrayList<Integer>(3); //Spécifiez la capacité initiale
//ArrayList<int> arrayList = new ArrayList<int>(); //Erreur de compilation
Jetez un œil au contenu de ArrayList
ArrayList.class
public class ArrayList<E> extends AbstractList<E> … {
private static final int DEFAULT_CAPACITY = 10;
private static final Object[] EMPTY_ELEMENTDATA = {};
transient Object[] elementData; //← État actuel des données ArrayList
private int size;
//constructeur
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
}
}
//Omission
L'identité d'ArrayList était une classe d'opération pratique centrée sur __Object [] __. Seuls les types de données de type __Object peuvent être utilisés comme ArrayList. __ Le type primitif n'étant pas un type de données qui hérite du type Object, ne peut-il pas être utilisé?
//8 types
byte, short, boolean, char, int, long, float, double
ArrayList<Integer> arrayList = new ArrayList<Integer>(3);
arrayList.add(new Integer(10); //a
arrayList.add(new Integer(11); //b
arrayList.add(new Integer(12); //c
arrayList.get(1);
arrayList.remove(1);
ArrayList<Integer> arrayList = new ArrayList<Integer>(3);
arrayList.add(new Integer(10); //a
arrayList.add(new Integer(11); //b
arrayList.add(new Integer(12); //c
arrayList.add(new Integer(13); //d
ArrayListSample.java
ArrayList<Integer> arrayList = new ArrayList<Integer>();
long array1Start = System.currentTimeMillis();
for(int i=0; i < 10000000;i++) { //← 10 millions
arrayList.add(new Integer(10));
}
long array1End = System.currentTimeMillis();
System.out.println("temps de traitement:" + (array1End - array1Start) + " ms");
Temps de traitement: 6505 ms
ArrayListSample.java
ArrayList<Integer> arrayList = new ArrayList<Integer>(10000000);
long array1Start = System.currentTimeMillis();
for(int i=0; i < 10000000;i++) { //← 10 millions
arrayList.add(new Integer(10));
}
long array1End = System.currentTimeMillis();
System.out.println("temps de traitement:" + (array1End - array1Start) + " ms");
Temps de traitement: 5630 ms
Il y avait une différence d'environ 1 seconde.
Pour une grande capacité, spécifiez la capacité attendue
Recommended Posts