Apex - Collezioni

Le raccolte è un tipo di variabile che può memorizzare più record. Ad esempio, List può memorizzare più record di oggetti Account. Vediamo ora una panoramica dettagliata di tutti i tipi di raccolta.

Liste

L'elenco può contenere un numero qualsiasi di record di primitive, raccolte, oggetti, definiti dall'utente e incorporati nel tipo Apex. Questo è uno dei tipi più importanti di raccolta e inoltre ha alcuni metodi di sistema che sono stati adattati specificamente per essere utilizzati con List. L'indice della lista inizia sempre con 0. Questo è sinonimo dell'array in Java. Un elenco dovrebbe essere dichiarato con la parola chiave "Elenco".

Example

Di seguito è riportato l'elenco che contiene l'elenco di un tipo di dati primitivo (stringa), ovvero l'elenco delle città.

List<string> ListOfCities = new List<string>();
System.debug('Value Of ListOfCities'+ListOfCities);

La dichiarazione dei valori iniziali di list è facoltativa. Tuttavia, dichiareremo i valori iniziali qui. Di seguito è riportato un esempio che mostra lo stesso.

List<string> ListOfStates = new List<string> {'NY', 'LA', 'LV'};
System.debug('Value ListOfStates'+ListOfStates);

Elenco degli account (sObject)

List<account> AccountToDelete = new List<account> (); //This will be null
System.debug('Value AccountToDelete'+AccountToDelete);

Possiamo dichiarare anche l'elenco annidato. Può salire fino a cinque livelli. Questo è chiamato elenco multidimensionale.

Questa è la lista dell'insieme di numeri interi.

List<List<Set<Integer>>> myNestedList = new List<List<Set<Integer>>>();
System.debug('value myNestedList'+myNestedList);

L'elenco può contenere un numero qualsiasi di record, ma esiste una limitazione sulla dimensione dell'heap per evitare problemi di prestazioni e monopolizzare le risorse.

Metodi per gli elenchi

Sono disponibili metodi per gli elenchi che possono essere utilizzati durante la programmazione per ottenere alcune funzionalità come il calcolo della dimensione dell'elenco, l'aggiunta di un elemento, ecc.

Di seguito sono riportati alcuni metodi utilizzati più di frequente:

  • size()
  • add()
  • get()
  • clear()
  • set()

Il seguente esempio dimostra l'utilizzo di tutti questi metodi

// Initialize the List
List<string> ListOfStatesMethod = new List<string>();

// This statement would give null as output in Debug logs
System.debug('Value of List'+ ListOfStatesMethod);

// Add element to the list using add method
ListOfStatesMethod.add('New York');
ListOfStatesMethod.add('Ohio');

// This statement would give New York and Ohio as output in Debug logs
System.debug('Value of List with new States'+ ListOfStatesMethod);

// Get the element at the index 0
String StateAtFirstPosition = ListOfStatesMethod.get(0);

// This statement would give New York as output in Debug log
System.debug('Value of List at First Position'+ StateAtFirstPosition);

// set the element at 1 position
ListOfStatesMethod.set(0, 'LA');

// This statement would give output in Debug log
System.debug('Value of List with element set at First Position' + ListOfStatesMethod[0]);

// Remove all the elements in List
ListOfStatesMethod.clear();

// This statement would give output in Debug log
System.debug('Value of List'+ ListOfStatesMethod);

È possibile utilizzare anche la notazione dell'array per dichiarare l'elenco, come indicato di seguito, ma questa non è una pratica generale nella programmazione Apex -

String [] ListOfStates = new List<string>();

Imposta

Un Set è un tipo di raccolta che contiene un numero multiplo di record univoci non ordinati. Un set non può avere record duplicati. Come gli elenchi, i set possono essere nidificati.

Example

Definiremo l'insieme di prodotti che l'azienda sta vendendo.

Set<string> ProductSet = new Set<string>{'Phenol', 'Benzene', 'H2SO4'};
System.debug('Value of ProductSet'+ProductSet);

Metodi per insiemi

Set supporta metodi che possiamo utilizzare durante la programmazione come mostrato di seguito (stiamo estendendo l'esempio sopra) -

// Adds an element to the set
// Define set if not defined previously
Set<string> ProductSet = new Set<string>{'Phenol', 'Benzene', 'H2SO4'};
ProductSet.add('HCL');
System.debug('Set with New Value '+ProductSet);

// Removes an element from set
ProductSet.remove('HCL');
System.debug('Set with removed value '+ProductSet);

// Check whether set contains the particular element or not and returns true or false
ProductSet.contains('HCL');
System.debug('Value of Set with all values '+ProductSet);

Mappe

È una coppia di valori chiave che contiene la chiave univoca per ogni valore. Sia la chiave che il valore possono essere di qualsiasi tipo di dati.

Example

L'esempio seguente rappresenta la mappa del nome del prodotto con il codice del prodotto.

// Initialize the Map
Map<string, string> ProductCodeToProductName = new Map<string, string>
{'1000'=>'HCL', '1001'=>'H2SO4'};

// This statement would give as output as key value pair in Debug log
System.debug('value of ProductCodeToProductName'+ProductCodeToProductName);

Metodi per le mappe

Di seguito sono riportati alcuni esempi che dimostrano i metodi che possono essere utilizzati con Map -

// Define a new map
Map<string, string> ProductCodeToProductName = new Map<string, string>();

// Insert a new key-value pair in the map where '1002' is key and 'Acetone' is value
ProductCodeToProductName.put('1002', 'Acetone');

// Insert a new key-value pair in the map where '1003' is key and 'Ketone' is value
ProductCodeToProductName.put('1003', 'Ketone');

// Assert that the map contains a specified key and respective value
System.assert(ProductCodeToProductName.containsKey('1002'));
System.debug('If output is true then Map contains the key and output is:'
   + ProductCodeToProductName.containsKey('1002'));

// Retrieves a value, given a particular key
String value = ProductCodeToProductName.get('1002');
System.debug('Value at the Specified key using get function: '+value);

// Return a set that contains all of the keys in the map
Set SetOfKeys = ProductCodeToProductName.keySet();
System.debug('Value of Set with Keys '+SetOfKeys);

I valori della mappa potrebbero non essere ordinati e quindi non dovremmo fare affidamento sull'ordine in cui sono memorizzati i valori e cercare di accedere alla mappa sempre utilizzando le chiavi. Il valore della mappa può essere nullo. Mappare le chiavi quando dichiarato String fa distinzione tra maiuscole e minuscole; ad esempio, ABC e abc verranno considerate chiavi diverse e trattate come uniche.