Inicialização de Lista em Uma Única Linha

JavaBeginner
Pratique Agora

Introdução

Em Java, podemos inicializar uma List em uma única linha de código usando uma variedade de abordagens. Neste laboratório, aprenderemos diferentes métodos para inicializar Lists em Java de forma concisa.

Usando o Método Arrays.asList()

Podemos criar uma List usando um array com o método asList(). Este método recebe diretamente os elementos como parâmetros e retorna uma lista de tamanho fixo. Se uma tentativa for feita para adicionar um elemento, uma UnsupportedOperationException será lançada.

import java.util.Arrays;
import java.util.List;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = Arrays.asList("red", "blue", "green");
        System.out.print("Colors List : " + colorsList); //Output : [red, blue, green]
    }
}

Para executar o código, abra o prompt de comando, navegue até o diretório do projeto e execute os seguintes comandos:

javac ListInitializationDemo.java
java ListInitializationDemo

Usando Streams do Java 8

Java Streams podem ser usados para criar uma List para os elementos do stream usando o método collect().

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = Stream.of("red", "blue", "green")
                                        .collect(Collectors.toList());
        System.out.print("Colors List : " + colorsList); //Output : [red, blue, green]
    }
}

Para executar o código, abra o prompt de comando, navegue até o diretório do projeto e execute os seguintes comandos:

javac ListInitializationDemo.java
java ListInitializationDemo

Usando o Método List.of()

O Java 9 fornece um método List.of() sobrecarregado para listas mutáveis e imutáveis.

import java.util.List;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = List.of("red", "blue", "green");
        System.out.print("Colors List : " + colorsList); //Output : [red, blue, green]
    }
}

Para executar o código, abra o prompt de comando, navegue até o diretório do projeto e execute os seguintes comandos:

javac ListInitializationDemo.java
java ListInitializationDemo

Usando a Sintaxe Double Brace

A Inicialização com Chaves Duplas pode ser usada para uma Classe Interna Anônima (Anonymous Inner Class) para inicializar uma List.

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

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = new ArrayList<String>() {
            {
                add("red");
                add("blue");
                add("green");
            }
        };
        System.out.print("Colors List : " + colorsList); //Output : [red,blue,green]
    }
}

Para executar o código, abra o prompt de comando, navegue até o diretório do projeto e execute os seguintes comandos:

javac ListInitializationDemo.java
java ListInitializationDemo

Usando Apache Commons Collections

Apache Commons Collections fornece o método unmodifiableList() que retorna uma visão imutável da lista especificada.

import java.util.List;
import org.apache.commons.collections4.ListUtils;
import java.util.Arrays;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = ListUtils.unmodifiableList(
                Arrays.asList("red", "blue", "green")
        );
        System.out.print("Colors List : " + colorsList); //Output : [red,blue,green]
    }
}

Para executar o código, abra o terminal, vá para o diretório do projeto e execute os seguintes comandos:

javac -cp commons-collections4-4.4.jar ListInitializationDemo.java
java -cp commons-collections4-4.4.jar:. ListInitializationDemo

Usando a Biblioteca Guava

A biblioteca Guava fornece o método newArrayList() que retorna um ArrayList mutável inicializado com os elementos.

import java.util.List;
import com.google.common.collect.Lists;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = Lists.newArrayList("red", "blue", "green");
        System.out.print("Colors List : " + colorsList); //Output : [red,blue,green]
    }
}

Para executar o código, abra o terminal, vá para o diretório do projeto e execute os seguintes comandos:

javac -cp guava-31.0.1-jre.jar ListInitializationDemo.java
java -cp guava-31.0.1-jre.jar:. ListInitializationDemo

Usando ImmutableList do Guava

Guava também fornece a classe ImmutableList que retorna uma List imutável.

import java.util.List;
import com.google.common.collect.ImmutableList;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = ImmutableList.of("red", "blue", "green");
        System.out.print("Colors List : " + colorsList); //Output : [red,blue,green]
    }
}

Para executar o código, abra o terminal, vá para o diretório do projeto e execute os seguintes comandos:

javac -cp guava-31.0.1-jre.jar ListInitializationDemo.java
java -cp guava-31.0.1-jre.jar:. ListInitializationDemo

Resumo

Em Java, existem inúmeras maneiras de inicializar uma List em uma única linha de código. Vimos maneiras de usar o Java 8 Stream para criar uma List, o uso do método Arrays.asList(), e o método List.of() para versões Java após a 9. Também vimos a Inicialização de Chaves Duplas (Double Brace Initialization) e um exemplo de como bibliotecas Java externas como Apache Commons Collections e Guava podem ser usadas.