ArrayList: a list that grows · ArrayList: uma lista que cresce
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;.
Uma lista que pode crescer
- Um array tem tamanho fixo. Uma vez criado, o length não pode mudar.
- Um
ArrayListé uma lista que pode crescer e encolher enquanto o programa roda. - Você deve importá-lo no topo do arquivo:
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.
Criando um ArrayList
- Escreva o tipo dos itens dentro de
<...>. Esta é a forma AP CSA. ArrayList<String>armazena texto.ArrayList<Integer>armazena números inteiros.- Uma nova lista começa vazia, com tamanho
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.
Os cinco métodos que você precisa
list.size()— quantos itens estão na lista.list.add(x)— coloquexno final da lista.list.get(i)— o item na posiçãoi(a primeira posição é 0).list.set(i, x)— substitua o item na posiçãoiporx.list.remove(i)— remova o item na posiçãoi; os itens seguintes deslocam-se para a esquerda.
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.
Números precisam de Integer
- Um
ArrayListsó pode armazenar objetos, não o tipo primitivoint. - Então escrevemos
ArrayList<Integer>.Integeré a forma objeto deint. - O Java alterna entre
inteIntegerautomaticamente. Isso se chama autoboxing. - Você pode
add(7)umint, eget(0)retorna um valor que pode ser usado comoint.
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.
Duas formas de percorrer
- Um for-loop por índice usa posições
0asize() - 1. Use-o quando precisar do índice. - Um for-each loop (
for (int x : list)) lê cada item em sequência. Use-o quando precisar apenas dos valores. - Ambos visitam cada item uma vez, em ordem.
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>.
Erros comuns
ArrayListusa.add,.get(i),.size()— não[].- Armazene objetos: use
ArrayList<Integer>, nãoArrayList<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.
Agora você tenta
- Cada tarefa pré-preenche a estrutura da classe — escreva seu código dentro do main, ou complete o método mostrado.
- Pressione Run para compilar e executar, depois Check answer.
- Seu código compila e roda no servidor, então até a primeira execução é rápida.
An ArrayList grows · Um ArrayList cresce
Unlike an array, an ArrayList changes size as you add/remove. · Diferente de um array, um ArrayList altera seu tamanho conforme você adiciona/remove.
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. · Complete sumList(ArrayList<Integer> a) para que ele retorne o total de todos os números na lista. Uma lista vazia soma 0. Percorra com um laço.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
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. · Complete countUp(int n) para criar uma nova ArrayList<Integer>, adicionar os números 1, 2, ..., n em ordem, e retorná-la. Se n for 0, retorne uma lista vazia.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
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). · Complete doubleAt(ArrayList<Integer> a, int i). Leia o valor no índice i com get, depois use set para armazenar duas vezes aquele valor de volta no índice i. Não retorne nada (void).
Click Run to see the output here. · Clique em Executar para ver a saída aqui.