Agora que trabalhamos com arrays, vamos apresentar os ArrayLists. ArrayLists fazem parte do Java Collections Framework e fornecem uma maneira mais flexível de trabalhar com listas de objetos. Ao contrário dos arrays, os ArrayLists podem crescer ou diminuir de tamanho dinamicamente.
-
Abra o arquivo chamado ArrayListDemo.java
no diretório do seu projeto.
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// We'll add our code here
}
}
Observe a instrução import
no topo. Isso informa ao Java que queremos usar a classe ArrayList em nosso programa.
-
Agora, vamos criar um ArrayList de Strings. Adicione esta linha dentro do método main
:
ArrayList<String> fruits = new ArrayList<>();
Isso cria um ArrayList vazio que pode conter objetos String. A parte <String>
é chamada de "genérico" e especifica o tipo de elementos que o ArrayList conterá.
-
Vamos adicionar alguns elementos ao nosso ArrayList. Adicione estas linhas:
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
O método add()
anexa elementos ao final da lista.
-
Agora, vamos imprimir nosso ArrayList. Adicione este código:
System.out.println("Fruits in the list:");
for (String fruit : fruits) {
System.out.println(fruit);
}
Isso usa um loop for aprimorado para iterar pelo ArrayList, semelhante ao que fizemos com arrays.
Dicas: Você pode compilar e executar seu programa a qualquer momento para ver a saída. Ou, você pode continuar adicionando mais código e executá-lo no final.
-
ArrayLists têm muitos métodos úteis. Vamos tentar alguns. Adicione este código:
System.out.println("\nNumber of fruits: " + fruits.size());
System.out.println("The second fruit is: " + fruits.get(1));
size()
retorna o número de elementos no ArrayList, e get(index)
recupera o elemento no índice especificado.
-
Também podemos substituir elementos em um ArrayList usando o método set()
. Adicione este código:
// Before: [Apple, Banana, Cherry]
fruits.set(1, "Blueberry"); // Replaces "Banana" with "Blueberry"
System.out.println("\nAfter replacing the second fruit:");
System.out.println(fruits); // [Apple, Blueberry, Cherry]
set(index, element)
substitui o elemento no índice especificado por um novo elemento. O tamanho do ArrayList permanece o mesmo.
-
Ao contrário dos arrays, os ArrayLists nos permitem inserir elementos em qualquer posição usando o método add(index, element)
. Isso é diferente de set()
, que vimos anteriormente. Vamos ver como add()
funciona:
// Before: [Apple, Blueberry, Cherry]
fruits.add(1, "Blackberry");
System.out.println("\nAfter inserting Blackberry at index 1:");
System.out.println(fruits);
// After: [Apple, Blackberry, Blueberry, Cherry]
Vamos entender o que aconteceu:
add(1, "Blackberry")
insere "Blackberry" no índice 1
- Os elementos existentes no índice 1 e além (Blueberry, Cherry) são automaticamente deslocados uma posição para a direita
- O tamanho do ArrayList aumenta em 1
- Isso é diferente de
set()
, que substituiria o elemento existente sem deslocar ou alterar o tamanho
Para ajudar a visualizar a diferença:
// Using add(index, element) - inserts and shifts
fruits.add(1, "Blackberry"); // [Apple, Blackberry, Blueberry, Cherry]
// Using set(index, element) - replaces without shifting
fruits.set(1, "Blackberry"); // [Apple, Blackberry, Cherry]
-
Também podemos remover elementos de um ArrayList. Adicione este código:
fruits.remove("Cherry");
System.out.println("\nAfter removing Cherry:");
System.out.println(fruits);
Isso remove a primeira ocorrência de "Cherry" do ArrayList. Quando um elemento é removido, quaisquer elementos subsequentes são deslocados para a esquerda para preencher a lacuna.
-
Finalmente, vamos verificar se certos elementos estão em nosso ArrayList:
System.out.println("\nDoes the list contain Apple? " + fruits.contains("Apple"));
System.out.println("Does the list contain Cherry? " + fruits.contains("Cherry"));
O método contains()
verifica se o ArrayList contém um elemento específico e retorna um valor booleano.
-
Salve o arquivo, compile e execute o programa:
javac ~/project/ArrayListDemo.java
java -cp ~/project ArrayListDemo
Você deve ver uma saída semelhante a esta:
Fruits in the list:
Apple
Banana
Cherry
Number of fruits: 3
The second fruit is: Banana
After replacing the second fruit:
[Apple, Blueberry, Cherry]
After inserting Blackberry at index 1:
[Apple, Blackberry, Blueberry, Cherry]
After removing Cherry:
[Apple, Blackberry, Blueberry]
Does the list contain Apple? true
Does the list contain Cherry? false
Parabéns! Você agora criou um ArrayList, adicionou e removeu elementos, acessou elementos por índice e usou vários métodos ArrayList. Você aprendeu as distinções importantes entre operações como add()
, que insere e desloca elementos, e set()
, que substitui elementos. ArrayLists oferecem mais flexibilidade do que arrays, pois podem crescer e diminuir conforme necessário. Isso os torna muito úteis quando você não sabe com antecedência com quantos elementos estará trabalhando.