HOWTO · Java

Como criar uma nova lista em Java

O artigo introduz métodos para criar uma nova lista em Java

Este tutorial irá discutir métodos para criar diferentes tipos de listas em Java.

List em Java é uma interface e é implementada por ArrayList, LinkedList, Vector e Stack. Ela fornece uma coleção ordenada de objetos. O usuário tem controle preciso sobre onde na lista cada elemento é inserido. O usuário pode acessar elementos por seu índice inteiro (posição na lista) e procurar por elementos na lista. Além disso, as Listas também permitem que elementos duplicados sejam armazenados.

Criar uma Nova Lista Vazia em Java

Como a List é uma interface, não podemos criar um objeto de Lista diretamente. Entretanto, podemos criar objetos das classes que implementam a interface Listar: Lista de Array, Lista de links, Vetor e Stack. Aqui está uma maneira simples:

List myArrayList = new ArrayList();
List myLinkedList = new LinkedList();
List myVector = new Vector();
List myStack = new Stack();

Estes tipos de Listas não têm um tipo de dado específico e podem conter qualquer tipo de objetos e valores. Vamos tentar criá-las em Java e adicionar alguns valores a elas.

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    // ArrayList
    List myArrayList = new ArrayList();
    myArrayList.add(1);
    myArrayList.add(2);
    myArrayList.add("three");
    System.out.println("ArrayList: " + myArrayList);

    // LinkedList
    List myLinkedList = new LinkedList();
    myLinkedList.add(4);
    myLinkedList.add(5);
    myLinkedList.add("six");
    System.out.println("LinkedList: " + myLinkedList);

    // Stack
    List myStack = new Stack();
    myStack.add(7);
    myStack.add(8);
    myStack.add("nine");
    System.out.println("Stack: " + myStack);
  }
}

Os códigos acima resulta:

ArrayList: [1, 2, three]
LinkedList: [4, 5, six]
Stack: [7, 8, nine]

Podemos ver que adicionamos valores int e String às listas sem nenhum erro.

É possível especificar o tipo de dados de modo que somente valores desse tipo em particular possam ser armazenados. Vamos tentar outro exemplo.

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    // ArrayList
    List<Integer> myArrayList = new ArrayList<>();
    myArrayList.add(1);
    myArrayList.add(2);
    myArrayList.add("three");
    System.out.println("ArrayList: " + myArrayList);
  }
}

O código acima resulta no seguinte erro.

> /myClass.java:9: error: incompatible types: String cannot be converted to Integer
>         myArrayList.add("three");

É porque ao criar o objeto ArrayList, especificamos o tipo de dados a ser Integer; portanto, ele não aceitará nenhum outro tipo de dados.

Crie uma nova lista não vazia em Java

Discutimos como criar objetos da Lista vazia e depois adicionar objetos à lista. Agora vamos ver outra maneira de criar uma Lista com objetos dentro dela.

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    List<String> list = new ArrayList<String>() {
      {
        add("a");
        add("b");
      }
    };
    System.out.println("ArrayList: " + list);
  }
}

O código acima sai:

ArrayList: [a, b]

Criar uma Lista Não-Vazia de Tamanho Fixo em Java

Também podemos criar uma lista não vazia de tamanho fixo. Se assim for, operações como add, remove não serão suportadas.

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    List<Integer> list = Arrays.asList(1, 2);
    System.out.println("ArrayList: " + list);
  }
}

O código acima sai:

ArrayList: [1, 2]

Vamos ver o que acontece se tentarmos adicionar outro elemento a esta lista.

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    List<Integer> list = Arrays.asList(1, 2);
    list.add(3);
    System.out.println("ArrayList: " + list);
  }
}

O código acima dá o seguinte erro, pois não permite operações como add, remove etc:

> Exception in thread "main" java.lang.UnsupportedOperationException
> 	at java.base/java.util.AbstractList.add(AbstractList.java:153)
> 	at java.base/java.util.AbstractList.add(AbstractList.java:111)
> 	at myClass.main(myClass.java:6)

Entretanto, você pode alterar o valor em qualquer posição neste tipo de lista.

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    List<Integer> list = Arrays.asList(1, 2);
    System.out.println("Initial ArrayList: " + list);
    list.set(1, 3);
    System.out.println("Changed ArrayList: " + list);
  }
}

O código acima sai:

Initial ArrayList: [1, 2]
Changed ArrayList: [1, 3]

Agora sabemos como criar diferentes tipos de Listas em Java.