Introduzione alle collections di Apex

Quando si impara la programmazione su Salesforce, uno dei principali argomenti che vengono trattati è rappresentato dalle strutture dati che consentono di raggruppare Oggetti. Questo con il fine di ciclare su tali Oggetti ed effettuare su di essi diversi tipi di operazioni o semplicemente filtrarli.

Quando si programma in particolare in Apex si fa molto uso delle collection, soprattutto per evitare di superare i limiti imposti da Salesforce. Il classico esempio è quello di quando si effettua una sola query per recuperare tutte le informazioni iniziali dal database e poi suddividere le informazioni in differenti collections.

Apex è un linguaggio di programmazione fortemente tipizzato, questo significa che quando creiamo una collection in essa potremo inserire soltanto Oggetti dello stesso tipo (questo non è vero per altri linguaggi come Javascript o Python).

Per dichiarare quale sarà il tipo ammesso all’interno della singola collection utilizzerò le parentesi angolari, come nell’esempio sotto:

List<String> mystringList = new List<String>();

All’interno delle collections possiamo salvare qualsiasi tipo di dato: 

  • Oggetti standard e custom
  • Tipi primitivi come stringhe e numeri
  • Oggetti wrapper creati a runtime

In Salesforce abbiamo tre tipi di collections: 

  • List
  • Set
  • Map

Ognuna di queste ha caratteristiche particolari che la rendono adatta a differenti tipi di scenari di utilizzo.

Per tutti e tre i tipi di collections non vi sono limiti di elementi che si possono aggiungere ma, ovviamente, esiste un limite totale di Heap Size Memory. Quindi bisogna fare attenzione sia al numero di elementi che si inseriscono sia alla grandezza di ogni Oggetto.

Le List in Salesforce

Le List rappresentano il primo e più utilizzato tipo di collection in Salesforce.

La List rappresenta una collezione ordinata di elementi che vengono distinti all’interno della lista attraverso un particolare indice.

È anche possibile creare una lista all’interno di una lista in modo da farla diventare multidimensionale come nell’esempio seguente:

List<List<String>> myList = new List<List<String>>();

I metodi principali che utilizziamo con le List sono:

– Add(element) – Per aggiungere un elemento ad una lista

– Add(element, index) – Per aggiungere un elemento in un dato indice

– AddAll(List<T> elements) – Per aggiungere una List ad un’altra lista 

– Contains(element) – Per verificare se un elemento è contenuto in una lista

Quelli elencati sopra sono i metodi che più spesso vengono utilizzati con le List, ma se vuoi essere sicuro di cosa si può o non si può fare con una lista, puoi leggere la guida completa dei metodi che possono essere utilizzati con le List.

Cosa non puoi fare con le liste?

Non puoi gestire i duplicati, infatti nelle List è possibile inserire due elementi uguali. Se è necessario evitare di inserire duplicati in una collection bisogna utilizzare i Set.

I Set in Salesforce

Un set è una collection NON ordinata di elementi dello stesso tipo che non contiene duplicati. Per creare un Set puoi utilizzare il seguente comando:

Set<String> myStringSet = new Set<String>();

I set in Apex utilizzano una struttura di tipo Hash. I principali metodi utilizzati per i Set sono i seguenti:

  • Add(element) – Per aggiungere un elemento ad una lista
  • Contains(element) – Per verificare se un elemento è contenuto in una lista
  • HashCode – Che restituisce l’hashCode corrispondente all’elemento nel Set

Per conoscere tutti gli altri metodi del Set potete consultare la Guida completa dei metodi che possono essere utilizzati con i Set.

Map in Salesforce

Le Map sono diverse rispetto alle List e ai Set perchè ogni nodo della collection è composta da una coppia <chiave,valore> in cui la chiave è sempre univoca. Sia chiave che valore possono includere tutti i tipi di Salesforce: numeri, stringe, Oggetti o Oggetti built-in Apex.

Per creare una Map in Salesforce:

Map<Integer, String> m1 = new Map<Integer, String>();

I metodi principali utilizzati per le Map sono:

  • Put(key, element) – Per inserire un elemento relativo ad una chiave
  • Get(key) – Per prendere un elemento collegato alla chiave passata
  • ContainsKey(key) – Per verificare se una chiave è già stata inserita
  • KeySet() – Per ottenere un set contenente tutte le chiavi di una Mappa
  • Values() – Per ottenere una lista di tutti i values della mappa

Per conoscere tutti i metodi che potete chiamare usando le Map, potete consultare la Guida completa dei metodi che possono essere utilizzati con le Map

Questa era una introduzione alle collections. Conoscere questo argomento è fondamentale e ti sarà molto utile per poter diventare un buon sviluppatore Salesforce!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *