Utilizzare le raccolte
Obiettivi di apprendimento
Al completamento di questa unità, sarai in grado di:
- Dichiarare e inizializzare una lista.
- Illustrare due modi di aggiungere elementi a una lista.
Raccolte
Una raccolta è un tipo di variabile in cui è possibile memorizzare più elementi. Nel nostro esempio della preparazione del tè, abbiamo una zuccheriera che contiene diverse zollette di zucchero. Possiamo considerare la zuccheriera una raccolta e i cubetti sono gli elementi memorizzati nella raccolta.
Anche se ci sono tre tipi di raccolte in Apex (liste, insiemi e mappe), in questo modulo ci concentreremo sulle liste.
Liste
In Apex, una lista è un gruppo ordinato di elementi dello stesso tipo, come una lista degli acquisti.
- Tè
- Zucchero
- Miele
- Latte
Ciascun elemento della lista degli acquisti è una stringa e occupa la propria posizione al suo interno. Per dichiarare una lista sono necessarie alcune cose. Dovrai utilizzare la parola riservata List, indicare il tipo di dati (il tipo di dati di tutti gli elementi deve essere lo stesso) racchiuso tra i caratteri <> e, infine, inserire la parola riservata new. Alla fine dell'istruzione è necessario aggiungere una coppia di parentesi.
Dichiarare una lista vuota
- Nella Developer Console, fai clic su Debug | Open Execute Anonymous Window (Apri finestra di esecuzione anonima).
- Copia il codice seguente e incollalo nella finestra Enter Apex Code (Inserisci codice Apex).
//Declare the groceries list List<String> groceries = new List<String>(); //The output for this statement is an empty list, (). System.debug('Groceries Value: ' + groceries);
- Seleziona la casella di controllo Open log (Apri registro) e fai clic su Execute (Esegui). Si apre la finestra Execution Log (Registro di esecuzione), in cui è visualizzato il risultato dell'esecuzione del codice.
- Seleziona la casella di controllo Debug Only (Solo debug) nella parte bassa della finestra.
Quando hai eseguito il codice, hai probabilmente notato che l'output era (). Questo accade perché non hai aggiunto elementi alla lista, che è vuota. Quando hai dichiarato la lista groceries
, hai creato un unico spazio vuoto pronto per l'aggiunta di elementi.
Dichiarare una lista di dimensioni prestabilite
Se sappiamo esattamente quanti elementi deve contenere la lista, possiamo impostarne le dimensioni in fase di dichiarazione. Per farlo, dobbiamo includere le dimensioni tra parentesi quadre, [ ], dopo il tipo di dati, in questo modo:
In questa riga di codice è stata dichiarata una lista di stringhe denominata groceries e ne è stata impostata la dimensione su 4 stringhe. Questo è l'aspetto della lista groceries vuota:
La posizione di un elemento nella sequenza è denominata indice. L'indice ci consente di fare riferimento ai singoli elementi. Probabilmente hai imparato a contare a partire dal numero uno. Tuttavia, in molti linguaggi di programmazione, si inizia a contare da zero. Quindi, quando la creiamo tramite il codice Apex, la nostra lista avrà l'aspetto seguente.
- Tè
- Zucchero
- Miele
- Latte
L'indice da utilizzare per fare riferimento agli elementi della lista sarà 0 per il tè, 1 per lo zucchero, 2 per il miele e così via.
Il riferimento a un dato elemento della lista mediante l'indice (la sua posizione nella lista) avrà questo aspetto:
- Nella Developer Console, fai clic su Debug | Open Execute Anonymous Window (Apri finestra di esecuzione anonima).
- Copia il codice seguente e incollalo nella finestra Enter Apex Code (Inserisci codice Apex).
String[] groceries = new String[4]; System.debug('Initialized groceries: ' + groceries); System.debug('Item 0: ' + groceries[0]);
- Seleziona la casella di controllo Open log (Apri registro) e fai clic su Execute (Esegui). Si apre la finestra Execution Log (Registro di esecuzione), in cui è visualizzato il risultato dell'esecuzione del codice.
- Seleziona la casella di controllo Debug Only (Solo debug) nella parte bassa della finestra.
Il valore del primo elemento dell'elenco è null. Aggiungiamo degli elementi alla lista.
Inizializzare una lista
Inizializzare una lista vuol dire assegnare a quella lista dei valori iniziali. Esistono due modi di aggiungere elementi a una lista:
- Dichiarare la lista e inizializzarla.
//Sets the first item in the list to 'Tea' List<String> groceries = new List<String>{'Tea'};
- Dichiarare una lista vuota e aggiungere gli elementi in un secondo momento.
List<String> groceries = new List<String>(); groceries.add('Tea');
Dichiarare e inizializzare una lista
La sintassi per inizializzare una lista con dei valori è uguale a quella utilizzata per dichiarare una lista vuota. La differenza sta nel fatto che, per aggiungere i valori, invece di utilizzare parentesi tonde ( ( )
), si utilizzano parentesi graffe ( { }
).
- Nella Developer Console, fai clic su Debug | Open Execute Anonymous Window (Apri finestra di esecuzione anonima).
- Copia il codice seguente e incollalo nella finestra Enter Apex Code (Inserisci codice Apex).
//Declare the groceries list List<String> groceries = new List<String>{'Tea','Sugar','Honey','Milk'}; //The output for this statement is Tea, Sugar, Honey, Milk System.debug('Groceries: ' + groceries);
- Seleziona la casella di controllo Open log (Apri registro) e fai clic su Execute (Esegui). Si apre la finestra Execution Log (Registro di esecuzione), in cui è visualizzato il risultato dell'esecuzione del codice.
- Seleziona la casella di controllo Debug Only (Solo debug) nella parte bassa della finestra.
Dichiarare una lista vuota e aggiungere gli elementi in un secondo momento
E se invece preferisci aggiungere gli elementi in un secondo momento? In Apex esistono metodi che consentono di operare sulle liste. Per aggiungere elementi alla lista groceries utilizziamo il metodo add.
- Nella Developer Console, fai clic su Debug | Open Execute Anonymous Window (Apri finestra di esecuzione anonima).
- Copia il codice seguente e incollalo nella finestra Enter Apex Code (Inserisci codice Apex).
//Create the groceries list List<String> groceries = new List<String>(); //The output for this statement is null System.debug('Groceries: ' + groceries); //Use the add method to add an element to the list groceries.add('Tea'); groceries.add('Sugar'); groceries.add('Honey'); groceries.add(2, 'Milk'); //The output for this statement is Tea, Sugar, Milk, Honey System.debug('Groceries: ' + groceries);
- Seleziona la casella di controllo Open log (Apri registro) e fai clic su Execute (Esegui). Si apre la finestra Execution Log (Registro di esecuzione), in cui è visualizzato il risultato dell'esecuzione del codice.
- Seleziona la casella di controllo Debug Only (Solo debug) nella parte bassa della finestra.
Hai notato che tra groceries
e add
c'è un punto (".")? In Apex si utilizza la notazione con punti. Questa notazione viene utilizzata in diversi modi. Nella riga 8, colleghiamo il metodo add
(fornito da Apex) alla lista groceries
con un punto per aggiungere un elemento, Tea (Tè).
Nella riga 11 vediamo un altro modo di aggiungere elementi a una lista, ossia inserendoli in posizioni specifiche specificando l'indice:
Man mano che continui a scrivere codice Apex, imparerai a scegliere il metodo da utilizzare. Ma i concetti di base che imparerai in questa unità possono aiutarti a iniziare.
Maggiori informazioni sul funzionamento delle liste
I diversi modi di aggiungere elementi a una lista producono risultati lievemente diversi, talvolta inaspettati. Prova questo esercizio.
- Nella Developer Console, fai clic su Debug | Open Execute Anonymous Window (Apri finestra di esecuzione anonima).
- Copia il codice seguente e incollalo nella finestra Enter Apex Code (Inserisci codice Apex).
String[] groceries = new String[4]; System.debug('Groceries: ' + groceries); groceries.add('Tea'); groceries.add('Sugar'); System.debug('Added 2 items: ' + groceries); groceries.add(1, 'Honey'); System.debug('Added Honey in index 1: ' + groceries); System.debug('Item 0: ' + groceries[0]);
- Seleziona la casella di controllo Open log (Apri registro) e fai clic su Execute (Esegui). Si apre la finestra Execution Log (Registro di esecuzione), in cui è visualizzato il risultato dell'esecuzione del codice.
- Seleziona la casella di controllo Debug Only (Solo debug) nella parte bassa della finestra.
I risultati sono interessanti:
Quando, nelle righe 4 e 5, abbiamo aggiunto le due stringhe, non abbiamo specificato l'indice. Quindi, gli elementi Tea (Tè) e Sugar (Zucchero) sono stati aggiunti alla fine della lista, aumentandone le dimensioni da quattro a sei stringhe. Sulla riga 8 abbiamo specificato in modo esplicito l'indice 1 per l'elemento Honey (Miele). Quindi, perché questo elemento non è il primo della lista? Ricorda che, quando programmiamo, contiamo sempre a partire da 0 e non da 1. Sulla riga 11, il primo indice della lista è 0, che attualmente contiene il valore null
.
Scrivere codice assomiglia molto a risolvere un problema di matematica. C'è un'equazione, ma ci sono tanti modi diversi per fare la stessa cosa. In questa unità hai scoperto che ci sono diversi modi di operare con le liste in Apex. Sei tu a scegliere come fare per dichiarare una lista, inizializzarla o fare riferimento a un suo valore specifico. Troppe opzioni? Non ti preoccupare. Quando avrai acquisito maggiore familiarità con Apex, prova diversi modi di fare una cosa e scoprirai quale di questi metodi funziona meglio in determinate circostanze.
Risorse
- Apex Developer Guide: Lists (Guida per gli sviluppatori Apex: Liste)
- Apex Developer Guide: Collections (Guida per gli sviluppatori Apex: Raccolte)
- Apex Developer Guide: Reserved Keywords (Guida per gli sviluppatori Apex: Parole chiave riservate)
- Apex Developer Guide: Expression Operators (Guida per gli sviluppatori Apex: Operatori di espressione)