# ArrayList do Java: como criar e utilizar uma dessas listas

A **ArrayList** é uma das estruturas de dados mais utilizadas em Java. Permite modificar e armazenar dinamicamente uma coleção de objetos. Neste artigo, apresentamos a sintaxe e os métodos da ArrayList do Java.

## Qual é a diferença entre ArrayList e Array em Java?

A ArrayList do Java tem um tamanho dinâmico, o que significa que os elementos podem ser facilmente adicionados ou removidos. Além disso, a classe ArrayList pertence ao **Java Collections Framework** e, ao contrário das matrizes, não está disponível de forma nativa. Deve ser importada da biblioteca *java.util*.

A ArrayList é uma opção adequada quando o comprimento da [lista Java](https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/lista-java/) pode variar. Alguns exemplos são o armazenamento de objetos, a **pesquisa ou ordenação** de dados e a criação de listas ou filas.

O tamanho do tipo de dados array não pode ser alterado. Portanto, o número de objetos que o array deve conter deve ser conhecido antecipadamente. Por isso, os arrays são adequados para gerir um conjunto predefinido de **tipos de dados primitivos**, como int, float, chat ou boolean.

Uma desvantagem do ArrayList é o **maior tempo de acesso**. Enquanto que com os arrays existe uma área de memória reservada fixa, com o ArrayList esta não é contígua. Portanto, é importante ter em conta as respetivas vantagens e desvantagens e selecionar a estrutura de dados adequada para cada utilização.

## A sintaxe do Java ArrayList

Antes de criar uma ArrayList, a classe correspondente deve ser importada da biblioteca *java.util*.

```Java
import java.util.ArrayList;
```

A sintaxe geral é:

```Java
ArrayList<Type> arrayList= new ArrayList<>();
```

“Type” representa o tipo de dados respectivo do Java ArrayList.

Em seguida, criamos listas do tipo `String` e `Integer`.

```Java
ArrayList<String> arrayList= new ArrayList<>();
```

```Java
ArrayList<Integer> arrayList= new ArrayList<>();
```

ArrayList utiliza a **classe wrapper** correspondente dos tipos de dados primitivos para que sejam tratados como objetos. Portanto, precisamos especificar `Integer` em vez de `int`.

## Exemplos de métodos ArrayList em Java

Operações como adicionar ou eliminar elementos não são realizadas com ArrayList utilizando operadores Java, mas sim através de **métodos predefinidos**. A seguir, mostramos os métodos ArrayList mais comuns.

### Adicionar elementos

Depois de criar a ArrayList «colors» do tipo `String`, adicionamos vários elementos com o método `.add()`.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args){
        ArrayList<String> colors = new ArrayList<>();
        colors.add("blue");
        colors.add("red");
        colors.add("green");
        System.out.println("ArrayList: " + colors);
    }
}
```

Isso dá este resultado:

```Java
ArrayList: [blue, red, green]
```

### Remover elementos

Para remover objetos de uma ArrayList Java, usamos o método `.remove()` com a especificação do índice do elemento.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        ArrayList<String> colors = new ArrayList<>();
        colors.add("blue");
        colors.add("red");
        colors.add("green");
        System.out.println("ArrayList: " + colors);
        String color = colors.remove(1);
        System.out.println("ArrayList: " + colors);
        System.out.println("Removed Element: " + color);
    }
}
```

O resultado mostra a ArrayList modificada e o elemento removido:

```Java
ArrayList: [blue, green]
Removed Element: red
```

Como na maioria das linguagens de programação, em Java a contagem começa na **posição 0**. Portanto, o elemento eliminado no índice 1 é `red`.

### Acesso aos elementos de uma Java ArrayList

Com a função `.get()`, acedemos a um elemento numa posição específica.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        ArrayList<String> clothes = new ArrayList<>();
        clothes.add("jacket");
        clothes.add("shirt");
        clothes.add("pullover");
        System.out.println("ArrayList: " + clothes);
        String str = clothes.get(2);
        System.out.print("Element at index 2: " + str);
    }
}
```

Como resultado, obtemos:

```Java
ArrayList: [jacket, shirt, pullover]
Element at index 2: pullover
```

### Modificar elementos

Com `.set()`, estabelecemos um novo elemento num índice específico.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        ArrayList<String> colors = new ArrayList<>();
        colors.add("blue");
        colors.add("red");
        colors.add("green");
        System.out.println("ArrayList: " + colors);
        colors.set(2, "yellow");
        System.out.println("Modified ArrayList: " + colors);
    }
}
```

No resultado, vemos agora `yellow` em vez de `green` no índice 2:

```Java
ArrayList: [blue, red, green]
Modified ArrayList: [blue, red, yellow]
```

### Determinar o comprimento da Java ArrayList

O número de elementos de uma ArrayList pode ser facilmente calculado com o método `.size()`.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        ArrayList<String> colors = new ArrayList<>();
        colors.add("blue");
        colors.add("red");
        colors.add("green");
        System.out.println(colors.size());
    }
}
```

Como resultado, obtemos:

```Java
3
```

### Ordenar e iterar através de uma ArrayList

Para ordenar uma ArrayList em Java, é necessário importar a classe Collections. Para a iteração, utilizamos um [loop Java For Each](https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/loop-for-each-em-java/). Para cada iteração do loop, o elemento respectivo é enviado para a consola.

```Java
import java.util.ArrayList;
import java.util.Collections;
public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> ages = new ArrayList<Integer>();
        ages.add(20);
        ages.add(54);
        ages.add(17);
        ages.add(9);
        Collections.sort(ages);
        for (int i : ages) {
            System.out.println(i);
        }
    }
}
```

Os elementos da ArrayList são apresentados por ordem crescente:

```Java
9
17
20
54
```


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/java-arraylist/](https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/java-arraylist/) for AI/LLM consumption.