HOWTO · Java
Lista concatenada em Java
Este artigo apresenta a concatenação de lista em Java.
Nesta página
Uma coleção ordenada de elementos que podem aumentar dinamicamente é conhecida como coleção List. Ele é representado como um elemento node e cada nó contém uma referência para o próximo nó e o elemento. As operações que podemos realizar em uma coleção de lista incluem passagem de elemento, inserção, atualização e exclusão usando os índices.
Java fornece uma interface List que oferece vários métodos para seu funcionamento. As várias implementações da lista incluem ArrayList, LinkedList e SortedList. Existem diferentes propriedades da lista que podem:
- Torne-se valores duplicados na lista.
- Armazene elementos nulos.
- Cresce dinamicamente, ao contrário de arrayes cujo tamanho é definido.
O código a seguir ilustra como você pode criar uma lista de concatenação Java:
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ListConcatenation {
public static void main(String[] args) {
List<String> birds_list =
Stream.of("pigeon", "crow", "squirrel").collect(Collectors.toList()); // Java 8
List<String> animal_list = List.of("cat", "dog", "rabbit"); // Java 9
System.out.println("Way 1");
List<String> stringArrayList = new ArrayList<String>(); // Java7
stringArrayList.addAll(birds_list);
stringArrayList.addAll(animal_list);
System.out.println(stringArrayList);
System.out.println("Way 2");
List<String> newList =
Stream.concat(birds_list.stream(), animal_list.stream()).collect(Collectors.toList());
System.out.println(newList);
System.out.println("Way 3");
List<String> newList2 =
Stream.of(birds_list, animal_list).flatMap(Collection::stream).collect(Collectors.toList());
System.out.println(newList2);
}
}
No bloco de código acima, as duas primeiras linhas inicializam as listas que queremos concatenar.
A primeira forma de inicialização da lista é fornecer elementos no momento da própria declaração. Assim, de acordo com a metodologia Java 8, a interface Stream é usada. Os fluxos atuam como um wrapper para a fonte de dados e fornecem métodos para operar e processar os dados. O método estático of pega e cria o fluxo sequencial de elementos fornecidos como parâmetros e retorna o fluxo de elemento. A cadeia de operações que realizamos está em Java 8. O método collect é uma operação de terminal que coleta o stream fornecido após a redução.
Outra forma de inicializar a lista é usando a versão Java 9. Ele fornece uma maneira conveniente de inicializar uma lista usando o método de fábrica estático List.of que cria listas imutáveis.
Finalmente, um objeto List combinado é inicializado tradicionalmente usando a versão Java 7. O método addAll() é chamado usando a instância newList. O método anexa a coleção especificada à coleção identificada em seu final. Ele retorna true quando o acréscimo da lista é bem-sucedido. O método pode lançar NullPointerException quando a coleção de lista passada é nula.
A instância de lista combinada agora contém a coleção birds_list. Da mesma forma, a instância animal_list é adicionada a stringArrayList. E, finalmente, após imprimir a lista, ele cria uma coleção sequencial anexada uma após a outra.
Abaixo está a saída do console do bloco de código:
Way 1 [pigeon, crow, squirrel, cat, dog, rabbit] Way 2 [pigeon, crow, squirrel, cat, dog, rabbit]
Way 3 [pigeon, crow, squirrel, cat, dog, rabbit]
Listar concatenação usando o método cacat() em Java 8
A ilustração usa o mesmo bloco de código para mostrar o método concat() - é estático na interface Stream. É considerada uma operação intermediária ou inicialização lenta, pois opera quando uma operação de terminal é aplicada sobre a função. O método concat() usa dois fluxos que devem ser concatenados. E ele retorna a lista combinada dos dois fluxos que passamos como parâmetros. Por meio desse método, a função collect é chamada para converter o fluxo no formato desejado. A função leva o coletor como argumento e, em nosso caso, a função Collectors.toList() é passada para reduzir o fluxo no tipo List.
A saída seria semelhante ao primeiro bloco de código e é impressa no log do console acima sob a instrução Way 2.
Listar concatenação usando o método Stream.of() em Java 8
Como mencionado acima, de é um método estático na interface Stream que recebe elementos. Portanto, esses elementos podem ser tipos de dados primitivos ou classes de collections. As coleções de pássaros e animais passam como argumentos. Agora, o método flatMap é invocado na cadeia de chamadas e o uso é para realizar o processamento e transformar o fluxo passado.
O método flatMap leva uma Function como parâmetro. O método aplica transformações sobre os elementos e nivela o resultado. Nesse caso, Collection::stream é passado para converter os elementos em um único stream, que é retornado após o processamento. O fluxo agora é coletado usando o método collect.
A saída é a mesma do bloco do console acima com o título Way 3.