Apex - Coleções

Coleções são um tipo de variável que pode armazenar vários números de registros. Por exemplo, Lista pode armazenar vários números de registros do objeto Conta. Vamos agora ter uma visão geral detalhada de todos os tipos de coleção.

Listas

A lista pode conter qualquer número de registros de primitivos, coleções, sObjects, definidos pelo usuário e construídos no tipo Apex. Este é um dos tipos mais importantes de coleção e também possui alguns métodos de sistema que foram ajustados especificamente para uso com List. O índice de lista sempre começa com 0. Isso é sinônimo de array em Java. Uma lista deve ser declarada com a palavra-chave 'Lista'.

Example

Abaixo está a lista que contém a Lista de um tipo de dado primitivo (string), que é a lista de cidades.

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

Declarar os valores iniciais da lista é opcional. No entanto, iremos declarar os valores iniciais aqui. A seguir está um exemplo que mostra o mesmo.

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

Lista de contas (sObject)

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

Podemos declarar a Lista aninhada também. Pode ir até cinco níveis. Isso é chamado de lista multidimensional.

Esta é a lista de um conjunto de inteiros.

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

A lista pode conter qualquer número de registros, mas há uma limitação no tamanho do heap para evitar o problema de desempenho e monopolizar os recursos.

Métodos para listas

Existem métodos disponíveis para Listas que podemos utilizar durante a programação para obter algumas funcionalidades como calcular o tamanho da Lista, adicionar um elemento, etc.

A seguir estão alguns métodos usados ​​com mais frequência -

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

O exemplo a seguir demonstra o uso de todos esses 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);

Você também pode usar a notação de matriz para declarar a Lista, conforme fornecido abaixo, mas isso não é uma prática geral na programação do Apex -

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

Jogos

Um conjunto é um tipo de coleção que contém vários números de registros exclusivos não ordenados. Um conjunto não pode ter registros duplicados. Como as listas, os conjuntos podem ser aninhados.

Example

Estaremos definindo o conjunto de produtos que a empresa está vendendo.

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

Métodos para conjuntos

Set suporta métodos que podemos utilizar durante a programação, conforme mostrado abaixo (estamos estendendo o exemplo acima) -

// 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

É um par de valores-chave que contém a chave exclusiva para cada valor. Tanto a chave quanto o valor podem ser de qualquer tipo de dados.

Example

O exemplo a seguir representa o mapa do Nome do Produto com o código do Produto.

// 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 seguir estão alguns exemplos que demonstram os métodos que podem ser usados ​​com 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);

Os valores do mapa podem estar desordenados e, portanto, não devemos confiar na ordem em que os valores são armazenados e tentar acessar o mapa sempre usando chaves. O valor do mapa pode ser nulo. As chaves do mapa quando declaradas String diferenciam maiúsculas de minúsculas; por exemplo, ABC e abc serão considerados chaves diferentes e tratados como únicos.