Funções em Java - O Uso do ArrayList
- #Java
Na programação existem diversas estruturas de dados muito importantes e utilizadas no dia a dia, como listas, filas, pilhas, árvores, etc. Neste artigo vamos falar sobre listas, dando ênfase no ArrayList do Java, porém antes de explicar sobre o ArrayList, precisamos entender o conceito de lista. Uma lista é uma estrutura de dados que armazena uma coleção de elementos, onde cada elemento tem uma posição única identificada por meio de um índice. Na linguagem Java o ArrayList é uma das formas de implementar o conceito de lista mencionado anteriormente. Vamos entender um pouco mais sobre isso.
ArrayList:
O ArrayList é uma classe Java que implementa uma lista. A diferença entre o ArrayList e um array tradicional é que o ArrayList é uma lista redimensionável, ou seja, ela não possui um tamanho fixo e é possível manipular seus elementos de forma dinâmica. O ArrayList é uma implementação da interface List do Java e faz parte do pacote java.util. Vamos ver abaixo sua sintaxe e como declará-lo em seu código:
import java.util.ArrayList;
ArrayList<String> cities = new ArrayList<String>();
Há diversos métodos usados para manipular ArrayLists, vamos abordar um pouco cada um deles.
Adicionar um elemento:
Para adicionar elementos dentro do ArrayList é possível utilizar o método add(). Você pode tanto escolher a posição onde o elemento será adicionado (passando o valor do índice), quanto adicioná-lo no final da lista (sem passar nenhum valor para o índice).
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> cities = new ArrayList<String>();
cities.add("São Paulo");
cities.add("Santos");
cities.add("Ribeirão Preto");
cities.add(0, "Campinas");
System.out.println(cities);
}
}
A saída desse código será a seguinte:
[Campinas, São Paulo, Santos, Ribeirão Preto]
Campinas aparece na primeira posição pois foi especificado que fosse adicionada no índice 0. Todas as outras cidades foram adicionadas ao final da lista.
Acessar um elemento:
Para acessar um elemento, podemos utilizar o método get() passando o índice do elemento que você deseja acessar.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> cities = new ArrayList<String>();
cities.add("São Paulo");
cities.add("Santos");
cities.add("Ribeirão Preto");
cities.add(0, "Campinas");
System.out.println(cities.get(2));
}
}
Nesse caso será impresso na tela a cidade de Santos, que é o terceiro elemento do ArrayList (índice 2).
Alterar um elemento:
Para alterar um elemento, é possível utilizar o método set() passando o índice do elemento que será alterado e logo após o novo valor para esse elemento.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> cities = new ArrayList<String>();
cities.add("São Paulo");
cities.add("Santos");
cities.add("Ribeirão Preto");
cities.add(0, "Campinas");
cities.set(3, "Mirassol");
System.out.println(cities);
}
}
A saída desse trecho de código será a seguinte:
[Campinas, São Paulo, Santos, Mirassol]
Nesse exemplo alteramos o elemento de índice 3, que era Ribeirão Preto e agora passa a ser Mirassol.
Excluir um elemento:
Também é possível excluir elementos do ArrayList utilizando o método remove() passando o índice do elemento a ser excluído, bem semelhante aos métodos vistos anteriormente.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> cities = new ArrayList<String>();
cities.add("São Paulo");
cities.add("Santos");
cities.add("Ribeirão Preto");
cities.add(0, "Campinas");
cities.set(3, "Mirassol");
cities.remove(1);
System.out.println(cities);
}
}
A saída desse trecho de código será:
[Campinas, Santos, Mirassol]
Também é possível utilizar o método clear() para remover todos os elementos da lista.
Tamanho da lista:
Para saber o tamanho da lista, utilize o método size() que irá retornar a quantidade total de elementos do ArrayList.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> cities = new ArrayList<String>();
cities.add("São Paulo");
cities.add("Santos");
cities.add("Ribeirão Preto");
cities.add(0, "Campinas");
cities.set(3, "Mirassol");
cities.remove(1);
System.out.println(cities);
System.out.println(cities.size());
}
}
O resultado será:
[Campinas, Santos, Mirassol]
3
Percorrendo o ArrayList:
Para percorrer um ArrayList, é possível utilizar os loops for e for-each como no exemplo abaixo:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> cities = new ArrayList<String>();
cities.add("São Paulo");
cities.add("Santos");
cities.add("Ribeirão Preto");
cities.add(0, "Campinas");
cities.set(3, "Mirassol");
cities.remove(1);
System.out.println("Laço For");
for (int i = 0; i < cities.size(); i++) {
System.out.println(cities.get(i));
}
System.out.println("Laço For-Each");
for (String city : cities) {
System.out.println(city);
}
}
}
Como saída esse código terá:
Laço For
Campinas
Santos
Mirassol
Laço For-Each
Campinas
Santos
Mirassol
Outros Métodos e Curiosidades:
Há vários outros métodos para a manipulação de ArrayLists, como indexOf(), isEmpty(), variações do método remove(), subList(), entre outros. A especificação dos métodos vistos nesse artigo e todos os outros pode ser encontrada na documentação oficial: https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html.
Outro ponto interessante é que só é possível criar ArrayLists de objetos e não de tipos primitivos, como int, boolean, double, etc. Se você deseja criar um ArrayList de algum tipo primitivo deve-se utilizar as classes empacotadoras (wrapper class). Por exemplo, para o tipo int deve-se usar a classe Integer, para double a classe Double deve ser utilizada e para o tipo boolean utiliza-se a classe Boolean. Veja no exemplo abaixo:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Double> notas = new ArrayList<Double>();
notas.add(10.0);
notas.add(9.5);
notas.add(9.0);
notas.add(8.75);
for (double nota : notas) {
System.out.println(nota);
}
}
}
Saída:
10.0
9.5
9.0
8.75
Conclusão:
Podemos concluir que a classe ArrayList é muito importante para qualquer desenvolvedor Java, pois ela permite criar listas redimensionáveis, dando mais flexibilidade para desenvolver suas soluções. Muito útil para situações em que não sabemos ao certo quantos itens uma lista terá. Além disso ela pode reduzir o uso de memória em comparação com arrays tradicionais em algumas situações, já que a quantidade de memória utilizada é correspondente com a quantidade de itens adicionados na lista.