Elenco concatenato in Java
-
Concatenazione di elenchi utilizzando il metodo
cacat()
in Java 8 -
Concatenazione di elenchi utilizzando il metodo
Stream.of()
in Java 8
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 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