ArrayList: a list that grows · ArrayList : une liste qui grandit
A list that can grow
- An array has a fixed size. Once you make it, the length cannot change.
- An
ArrayListis a list that can grow and shrink while the program runs. - You must import it at the top of the file:
import java.util.ArrayList;.
Une liste qui peut grandir
- Un tableau a une taille fixe. Une fois créé, la longueur ne peut pas changer.
- Un
ArrayListest une liste qui peut grandir et rétrécir pendant l'exécution du programme. - Vous devez le importer en haut du fichier :
import java.util.ArrayList;.
Making an ArrayList
- Write the type of the items inside
<...>. This is the AP CSA way. ArrayList<String>holds text.ArrayList<Integer>holds whole numbers.- A new list starts empty, with size
0.
Créer un ArrayList
- Écrivez le type des éléments à l'intérieur de
<...>. C'est la méthode AP CSA. ArrayList<String>contient du texte.ArrayList<Integer>contient des nombres entiers.- Une nouvelle liste commence vide, avec une taille de
0.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<String>();
System.out.println(names.size()); // 0
names.add("Ann");
names.add("Bo");
System.out.println(names.size()); // 2
System.out.println(names); // [Ann, Bo]
}
}
The five methods you need
list.size()— how many items are in the list.list.add(x)— putxat the end of the list.list.get(i)— the item at positioni(the first position is 0).list.set(i, x)— replace the item at positioniwithx.list.remove(i)— take out the item at positioni; later items shift left.
Les cinq méthodes essentielles
list.size()— combien d'éléments se trouvent dans la liste.list.add(x)— insérerxà la fin de la liste.list.get(i)— l'élément à la positioni(la première position est 0).list.set(i, x)— remplacer l'élément à la positioniparx.list.remove(i)— retirer l'élément à la positioni; les éléments suivants se décalent vers la gauche.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> fruit = new ArrayList<String>();
fruit.add("apple");
fruit.add("pear");
fruit.add("plum");
System.out.println(fruit.get(0)); // apple
fruit.set(1, "grape"); // pear -> grape
fruit.remove(2); // take out "plum"
System.out.println(fruit); // [apple, grape]
}
}
Numbers need Integer
- An
ArrayListcan only hold objects, not the simple typeint. - So we write
ArrayList<Integer>.Integeris the object form ofint. - Java changes between
intandIntegerfor you. This is called autoboxing. - You can
add(7)anint, andget(0)gives back a value you can use asint.
Les nombres ont besoin de Integer
- Un
ArrayListne peut contenir que des objets, pas le type primitifint. - Nous écrivons donc
ArrayList<Integer>.Integerest la forme objet deint. - Java effectue automatiquement la conversion entre
intetInteger. C'est ce qu'on appelle l'autoboxage. - Vous pouvez
add(7)unint, etget(0)retourne une valeur que vous pouvez utiliser commeint.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(10); // int 10 is boxed into Integer
nums.add(20);
int first = nums.get(0); // unboxed back to int
System.out.println(first + nums.get(1)); // 30
}
}
Two ways to traverse
- An index for-loop uses positions
0tosize() - 1. Use it when you need the index. - An enhanced for-loop (
for (int x : list)) reads each item in turn. Use it when you only need the values. - Both visit every item once, in order.
Deux façons de parcourir
- Une boucle for indexée utilise les positions
0àsize() - 1. Utilisez-la lorsque vous avez besoin de l'index. - Une boucle for améliorée (
for (int x : list)) lit chaque élément à son tour. Utilisez-la lorsque vous n'avez besoin que des valeurs. - Les deux visitent chaque élément une seule fois, dans l'ordre.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(3);
nums.add(5);
nums.add(8);
// index for-loop
for (int i = 0; i < nums.size(); i++) {
System.out.println("at " + i + ": " + nums.get(i));
}
// enhanced for-loop
int total = 0;
for (int x : nums) {
total = total + x;
}
System.out.println("total " + total); // total 16
}
}
Common mistakes
ArrayListuses.add,.get(i),.size()— not[].- Store objects: use
ArrayList<Integer>, notArrayList<int>.
Erreurs courantes
ArrayListutilise.add,.get(i),.size()— pas[].- Stocker des objets : utilisez
ArrayList<Integer>, pasArrayList<int>.
Now you try
- Each task pre-fills the class skeleton — write your code inside main, or complete the method shown.
- Press Run to compile and run, then Check answer.
- Your code compiles and runs on the server, so even the first run is fast.
À vous maintenant
- Chaque tâche préremplit le squelette de classe — écrivez votre code dans main, ou complétez la méthode montrée.
- Appuyez sur Exécuter pour compiler et exécuter, puis sur Vérifier la réponse.
- Votre code compile et s'exécute sur le serveur, donc même la première exécution est rapide.
An ArrayList grows · Un ArrayList grandit
Unlike an array, an ArrayList changes size as you add/remove. · Contrairement à un tableau, un ArrayList change de taille lorsque vous ajoutez/supprimez.
Complete sumList(ArrayList<Integer> a) so it returns the total of all numbers in the list. An empty list totals 0. Traverse with a loop. · Complétez sumList(ArrayList<Integer> a) pour qu'elle retourne le total de tous les nombres de la liste. Une liste vide totalise 0. Parcourez avec une boucle.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Complete countUp(int n) so it makes a new ArrayList<Integer>, adds the numbers 1, 2, ..., n in order, and returns it. If n is 0, return an empty list. · Complétez countUp(int n) pour qu'elle crée un nouveau ArrayList<Integer>, ajoute les nombres 1, 2, ..., n dans l'ordre, et le retourne. Si n est 0, retournez une liste vide.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Complete doubleAt(ArrayList<Integer> a, int i). Read the value at index i with get, then use set to store two times that value back at index i. Return nothing (void). · Complétez doubleAt(ArrayList<Integer> a, int i). Lisez la valeur à l'indice i avec get, puis utilisez set pour stocker deux fois cette valeur à l'indice i. Ne retournez rien (void).
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.