Elenco concatenato in Java

Rashmi Patidar 12 ottobre 2023
  1. Concatenazione di elenchi utilizzando il metodo cacat() in Java 8
  2. Concatenazione di elenchi utilizzando il metodo Stream.of() in Java 8
Elenco concatenato in Java

Una raccolta ordinata di elementi che possono aumentare dinamicamente è nota come raccolta List. Viene rappresentato come un elemento node e ogni nodo contiene un riferimento al nodo successivo e all’elemento. Le operazioni che possiamo eseguire su una raccolta di elenchi includono l’attraversamento di elementi, l’inserimento, l’aggiornamento e l’eliminazione utilizzando gli indici.

Java fornisce un’interfaccia List che offre vari metodi per il suo funzionamento. Le molteplici implementazioni della lista includono ArrayList, LinkedList e SortedList. Esistono diverse proprietà della lista che possono:

  • Diventa valori duplicati nella lista.
  • Memorizza elementi nulli.
  • Cresci in modo dinamico, a differenza degli array la cui dimensione è definita.

Il codice seguente illustra come creare un elenco concatenato 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);
  }
}

Nel blocco di codice sopra, le prime due righe inizializzano gli elenchi che vogliamo concatenare.

Il primo modo di inizializzazione della lista è quello di fornire elementi al momento della dichiarazione stessa. Quindi, secondo la metodologia Java 8, viene utilizzata l’interfaccia Stream. I flussi fungono da wrapper per l’origine dati e forniscono metodi per operare ed elaborare i dati. Il metodo statico of prende e crea il flusso sequenziale degli elementi forniti come parametri e restituisce il flusso dell’elemento. La catena di operazioni che eseguiamo è in Java 8. Il metodo collect è un’operazione terminale che raccoglie il stream fornito dopo la riduzione.

Un altro modo per inizializzare la lista è utilizzare la versione Java 9. Fornisce un modo conveniente per inizializzare un elenco utilizzando il metodo di fabbrica statico List.of che crea elenchi immutabili.

Infine, un oggetto List combinato viene inizializzato tradizionalmente utilizzando la versione Java 7. Il metodo addAll() viene invocato utilizzando l’istanza newList. Il metodo aggiunge la raccolta specificata alla raccolta identificata alla sua fine. Restituisce true quando l’aggiunta della lista ha esito positivo. Il metodo può generare NullPointerException quando la raccolta di elenchi passati è nulla.

L’istanza della lista combinata ora contiene la collezione birds_list. Allo stesso modo l’istanza animal_list viene aggiunta a stringArrayList. E infine, dopo aver stampato l’elenco, crea una raccolta sequenziale aggiunta una dopo l’altra.

Di seguito è riportato l’output della console del blocco di codice:

Way 1 [pigeon, crow, squirrel, cat, dog, rabbit] Way 2 [pigeon, crow, squirrel, cat, dog, rabbit]
    Way 3 [pigeon, crow, squirrel, cat, dog, rabbit]

Concatenazione di elenchi utilizzando il metodo cacat() in Java 8

L’illustrazione utilizza lo stesso blocco di codice per mostrare il metodo concat() - è statico nell’interfaccia Stream. È considerata un’operazione intermedia o un’inizializzazione pigra poiché opera quando un’operazione terminale viene applicata alla funzione. Il metodo concat() accetta due flussi che devono essere concatenati. E restituisce la lista combinato dei due flussi che passiamo come parametri. Con questo metodo viene invocata la funzione collect per convertire lo stream nel formato desiderato. La funzione prende il collector come argomento e, nel nostro caso, viene passata la funzione Collectors.toList() per ridurre il flusso nel tipo List.

L’output sarebbe simile al primo blocco di codice e viene stampato nel registro della console sopra sotto l’istruzione Way 2.

Concatenazione di elenchi utilizzando il metodo Stream.of() in Java 8

Come accennato in precedenza, of è un metodo statico nell’interfaccia Stream che accetta elementi. Quindi questi elementi possono essere tipi di dati primitivi o classi collections. Le collezioni di uccelli e animali passano come argomenti. Ora, il metodo flatMap viene invocato nella catena di chiamate e l’uso è quello di eseguire l’elaborazione e trasformare il flusso passato.

Il metodo flatMap prende una Funtion come parametro. Il metodo applica le trasformazioni sugli elementi e appiattisce il risultato. In questo caso, viene passato Collection::stream per convertire gli elementi in un unico stream, che viene restituito dopo l’elaborazione. Il flusso viene ora raccolto utilizzando il metodo collect.

L’output è lo stesso del blocco console sopra con l’intestazione come Way 3.

Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Articolo correlato - Java List