Коллекции — это тип переменной, которая может хранить несколько записей. Например, List может хранить несколько номеров записей объекта Account. Теперь давайте подробно рассмотрим все типы коллекций.
Списки
Список может содержать любое количество записей примитивов, коллекций, объектов sObject, определенных пользователем и встроенных в тип Apex. Это один из наиболее важных типов коллекций, а также некоторые системные методы, специально разработанные для использования с List. Индекс списка всегда начинается с 0. Это синоним массива в Java. Список должен быть объявлен с ключевым словом «Список».
пример
Ниже приведен список, который содержит список типа данных примитива (строка), то есть список городов.
List<string> ListOfCities = new List<string>(); System.debug('Value Of ListOfCities'+ListOfCities);
Объявление начальных значений списка необязательно. Тем не менее, мы объявим начальные значения здесь. Ниже приведен пример, который показывает то же самое.
List<string> ListOfStates = new List<string> {'NY', 'LA', 'LV'}; System.debug('Value ListOfStates'+ListOfStates);
Список учетных записей (sObject)
List<account> AccountToDelete = new List<account> (); //This will be null System.debug('Value AccountToDelete'+AccountToDelete);
Мы также можем объявить вложенный список. Это может идти до пяти уровней. Это называется многомерным списком.
Это список множества целых чисел.
List<List<Set<Integer>>> myNestedList = new List<List<Set<Integer>>>(); System.debug('value myNestedList'+myNestedList);
Список может содержать любое количество записей, но существует ограничение на размер кучи для предотвращения проблемы с производительностью и монополизации ресурсов.
Методы для списков
Для списков доступны методы, которые мы можем использовать при программировании для достижения некоторых функций, таких как вычисление размера списка, добавление элемента и т. Д.
Ниже приведены некоторые наиболее часто используемые методы —
- размер()
- добавлять()
- получить()
- Чисто()
- задавать()
Следующий пример демонстрирует использование всех этих методов
// 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);
Вы также можете использовать обозначение массива для объявления списка, как указано ниже, но это не является общей практикой в программировании Apex —
String [] ListOfStates = new List<string>();
наборы
Набор — это тип коллекции, который содержит несколько неупорядоченных уникальных записей. Набор не может иметь повторяющихся записей. Как и списки, наборы могут быть вложенными.
пример
Мы будем определять набор продуктов, которые продает компания.
Set<string> ProductSet = new Set<string>{'Phenol', 'Benzene', 'H2SO4'}; System.debug('Value of ProductSet'+ProductSet);
Методы для множеств
Set поддерживает методы, которые мы можем использовать при программировании, как показано ниже (мы расширяем приведенный выше пример) —
// 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);
Карты
Это пара ключ-значение, которая содержит уникальный ключ для каждого значения. И ключ, и значение могут быть любого типа данных.
пример
В следующем примере представлена карта названия продукта с кодом продукта.
// 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);
Методы для карт
Ниже приведены несколько примеров, которые демонстрируют методы, которые могут быть использованы с 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);
Значения карты могут быть неупорядоченными, и поэтому мы не должны полагаться на порядок, в котором хранятся значения, и пытаться получить доступ к карте всегда, используя ключи. Значение карты может быть нулевым. Ключи карты при объявлении String чувствительны к регистру; например, ABC и abc будут рассматриваться как разные ключи и рассматриваться как уникальные.