0

Collections - List

#Java
Gabriel Machado
Gabriel Machado

O que é List e como trabalhar com ela


java.util.List

Implementações que aprenderemos:

  • java.util.ArrayList
  • java.util.Vector

Garante ordem de inserção.

Permite adição, atualização, leitura e remoção sem regras adicionais.

Permite ordenação através de comparators.


Lista é o objeto mais simples, é a implementação mais simples e mais comum das coleções. A lista é usada principalmente quando se deseja navegar dentro de um conjunto de dados existentes. Exemplo: uma busca no banco de dados ou em arquivo de texto.


Conseguimos criar uma lista usando ArrayList da seguinte forma:

import java.util.ArrayList;
import java.util.List;

public class ExampleList {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();

        // Adiciona um item no array
        names.add("Carlos");
        names.add("Pedro");
        names.add("Juliana");
        names.add("Anderson");
        names.add("Maria");
        names.add("João");

        System.out.println(names); // [Carlos, Pedro, Juliana, Anderson, Maria, João]
   }
}

Usando o ArrayList, não precisamos nos preocupar com o tamanho do array, podemos apenas adicionar um item ao final dele com o .add. Os itens serão matidos de acordo com a ordem que forem inseridos.


Dois métodos bem comuns que podemos utilizar nas listas são o get e set:

names.set(2, "Larissa");

System.out.println(names);
// [Carlos, Pedro, Larissa, Anderson, Maria, João]

String name = names.get(1);

System.out.println(name);
// Carlos

O método set altera na lista o elemento indicado no primeiro parâmetro (index) substituindo-o pelo elemento passado no segundo parâmetro.

Já o método get apenas retorna o elemento que está contido na posição passada pelo parâmetro (index).


É possível remover também elementos do array, tanto pelo index desejado, como pelo elemento em si:

names.remove(4); // Remove da lista o elemento contido no index passado no parâmetro

System.out.println(names); // [Carlos, Pedro, Larissa, Anderson, João]

names.remove("Anderson"); // Remove da lista o elemento que seja igual ao passado no parâmetro

System.out.println(names); // [Carlos, Pedro, Larissa, João]


É possível ordenar o array por ordem alfabética usando as Collections:

import java.util.Collections;

...

Collections.sort(names);

System.out.println(names);
// [Carlos, João, Larissa, Pedro]


Para descobrir em qual posição do array está um elemento, usamos o indexOf:

int positionOfLarissa = names.indexOf("Larissa");

System.out.println("positionOfLarissa: " + positionOfLarissa); // 2


Caso o elemento não exista no array, será retornado o index -1 :

int positionOfGabriel = names.indexOf("Gabriel");

System.out.println("positionOfGabriel: " + positionOfGabriel); // -1


O método que retorna a quantidade de elementos da lista é o size:

int size = names.size();

System.out.println(size); // 4

Não confunda a última posição do array com o tamanho dele! Lembre-se sempre que o array começa no index 0, ou seja, se o array tem 4 elementos (size = 4), quer dizer que a última posição dele é o index 3.


Temos duas funções bem úteis que retornam booleanos, são elas .contains() e .isEmpty():

  • A função contains confere se a lista contém o elemento indicado pelo parâmetro, retornando true ou false
boolean hasCarlos = names.contains("Carlos");

System.out.println(hasCarlos); // true

boolean hasFernando = names.contains("Fernando");

System.out.println(hasFernando); // false
  • A função isEmpty confere se a lista está vazia, ou seja, se ela não contém nenhum elemento, também retornando true ou false
boolean listIsEmpty = names.isEmpty();

System.out.println(listIsEmpty); // false


Também é possível navegar pelas listas usando dois métodos de repetição, o for e o while:

import java.util.Iterator;
...

for (String nameOfList: names) {
    System.out.println("byForeach --> " + nameOfList);
    // Imprime em sequência, um abaixo do outro Carlos, João, Larissa, Pedro
}

Iterator<String> iterator = names.iterator();
while (iterator.hasNext()) {
    System.out.println("byIterator --> " + iterator.next());
    // Imprime em sequência, um abaixo do outro Carlos, João, Larissa, Pedro
}


E por fim, podemos limpar a lista com o comando .clear():

names.clear();

listIsEmpty = names.isEmpty();

System.out.println(listIsEmpty); // true


Segue abaixo um exemplo de como faríamos a lista utilizando Vector ao invés de ArrayList:

import java.util.List;
import java.util.Vector;

public class ExampleVector {
    public static void main(String[] args) {
        List<String> sports = new Vector<>();

        // Adiciona 4 esportes no vetor
        sports.add("Futebol");
        sports.add("Basquetebol");
        sports.add("Tênis de Mesa");
        sports.add("Handebol");

        // Altera o valor da posição 2 do vetor
        sports.set(2, "Ping Pong");

        // Remove o esporte da posição 2
        sports.remove(2);

        // Remove o esporte Handebol do vetor
        sports.remove("Handebol");

        // Retorna o primeiro item do vetor
        System.out.println(sports.get(0)); // Futebol

        // Navega nos esportes
        for (String sport: sports) {
            System.out.println(sport);
		    // Imprime em sequência, um abaixo do outro: Futebol e Basquetebol
        }
    }
}
0
6

Comentários (1)

1
Igor Cruz

Igor Cruz

08/04/2021 12:39

Brabíssimo Gabriel, queria ter visto essa série de ArrayList completinha aqui quando fui começar a entender o Spring pra desenvolver uma API Rest. kk

20 anos / Desenvolvedor na Seidor Brasil

Brasil