Apex - Colecciones
Colecciones es un tipo de variable que puede almacenar varios registros. Por ejemplo, List puede almacenar varios registros del objeto Cuenta. Tengamos ahora una descripción detallada de todos los tipos de colecciones.
Liza
La lista puede contener cualquier número de registros primitivos, colecciones, sObjects, definidos por el usuario y construidos en tipo Apex. Este es uno de los tipos de recopilación más importantes y, además, tiene algunos métodos del sistema que se han diseñado específicamente para usar con List. El índice de lista siempre comienza con 0. Esto es sinónimo de la matriz en Java. Una lista debe declararse con la palabra clave 'Lista'.
Example
A continuación se muestra la lista que contiene la Lista de un tipo de datos primitivo (cadena), que es la lista de ciudades.
List<string> ListOfCities = new List<string>();
System.debug('Value Of ListOfCities'+ListOfCities);
Declarar los valores iniciales de la lista es opcional. Sin embargo, aquí declararemos los valores iniciales. A continuación se muestra un ejemplo que muestra lo mismo.
List<string> ListOfStates = new List<string> {'NY', 'LA', 'LV'};
System.debug('Value ListOfStates'+ListOfStates);
Lista de cuentas (sObject)
List<account> AccountToDelete = new List<account> (); //This will be null
System.debug('Value AccountToDelete'+AccountToDelete);
También podemos declarar la Lista anidada. Puede subir hasta cinco niveles. Esto se llama lista multidimensional.
Esta es la lista de conjuntos de números enteros.
List<List<Set<Integer>>> myNestedList = new List<List<Set<Integer>>>();
System.debug('value myNestedList'+myNestedList);
La lista puede contener cualquier número de registros, pero hay una limitación en el tamaño del montón para evitar problemas de rendimiento y monopolizar los recursos.
Métodos para listas
Hay métodos disponibles para las listas que podemos utilizar durante la programación para lograr algunas funcionalidades como calcular el tamaño de la lista, agregar un elemento, etc.
A continuación se muestran algunos de los métodos más utilizados:
- size()
- add()
- get()
- clear()
- set()
El siguiente ejemplo demuestra el uso de todos estos métodos.
// 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);
También puede usar la notación de matriz para declarar la Lista, como se indica a continuación, pero esto no es una práctica general en la programación de Apex:
String [] ListOfStates = new List<string>();
Conjuntos
Un conjunto es un tipo de colección que contiene varios registros únicos desordenados. Un conjunto no puede tener registros duplicados. Al igual que las listas, los conjuntos se pueden anidar.
Example
Definiremos el conjunto de productos que vende la empresa.
Set<string> ProductSet = new Set<string>{'Phenol', 'Benzene', 'H2SO4'};
System.debug('Value of ProductSet'+ProductSet);
Métodos para conjuntos
Set admite métodos que podemos utilizar durante la programación como se muestra a continuación (estamos ampliando el ejemplo anterior):
// 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);
Mapas
Es un par clave-valor que contiene la clave única para cada valor. Tanto la clave como el valor pueden ser de cualquier tipo de datos.
Example
El siguiente ejemplo representa el mapa del nombre del producto con el código del producto.
// 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);
Métodos para mapas
A continuación, se muestran algunos ejemplos que demuestran los métodos que se pueden usar 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);
Los valores del mapa pueden estar desordenados y, por lo tanto, no debemos confiar en el orden en el que se almacenan los valores e intentar acceder al mapa siempre utilizando claves. El valor del mapa puede ser nulo. Las claves de mapa cuando se declara String distinguen entre mayúsculas y minúsculas; por ejemplo, ABC y abc se considerarán claves diferentes y se tratarán como únicas.