📅  最后修改于: 2020-11-05 03:11:21             🧑  作者: Mango
集合是一种变量,可以存储多个记录。例如,列表可以存储多个Account对象的记录。现在让我们详细了解所有集合类型。
列表可以包含任意数量的原语,集合,sObjects,用户定义并以Apex类型构建的记录。这是最重要的集合类型之一,并且它具有一些专门针对List量身定制的系统方法。列表索引始终以0开头。这与Java中的数组同义。应使用关键字“列表”声明列表。
例
下面的列表包含原始数据类型的列表(字符串),即城市列表。
List ListOfCities = new List();
System.debug('Value Of ListOfCities'+ListOfCities);
声明list的初始值是可选的。但是,我们将在此处声明初始值。以下是显示相同内容的示例。
List ListOfStates = new List {'NY', 'LA', 'LV'};
System.debug('Value ListOfStates'+ListOfStates);
List AccountToDelete = new List (); //This will be null
System.debug('Value AccountToDelete'+AccountToDelete);
我们也可以声明嵌套列表。它可以上升到五个级别。这称为多维列表。
这是整数集的列表。
List>> myNestedList = new List>>();
System.debug('value myNestedList'+myNestedList);
列表可以包含任意数量的记录,但是为了防止性能问题和垄断资源,对堆大小有限制。
有一些Lists可用的方法,我们可以在编程时利用这些方法来实现一些功能,例如计算List的大小,添加元素等。
以下是一些最常用的方法-
下面的示例演示了所有这些方法的用法
// Initialize the List
List ListOfStatesMethod = new List();
// 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);
您也可以使用数组符号来声明List,如下所示,但这不是Apex编程中的常规做法-
String [] ListOfStates = new List();
集合是一种集合类型,其中包含多个无序唯一记录。集合不能有重复的记录。像列表一样,集合可以嵌套。
例
我们将定义公司销售的产品集。
Set ProductSet = new Set{'Phenol', 'Benzene', 'H2SO4'};
System.debug('Value of ProductSet'+ProductSet);
Set确实支持我们可以在编程时使用的方法,如下所示(我们在扩展上面的示例)-
// Adds an element to the set
// Define set if not defined previously
Set ProductSet = new Set{'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 ProductCodeToProductName = new Map
{'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 ProductCodeToProductName = new Map();
// 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);
映射值可能是无序的,因此我们不应依赖于存储值的顺序,而应尝试始终使用键来访问映射。地图值可以为null。声明为String时,映射键区分大小写;例如,ABC和abc将被视为不同的密钥,并被视为唯一。