集合是可以存儲多個記錄數(shù)的變量類型。 例如,List可以存儲多個Account對象的記錄。 讓我們詳細了解所有集合類型。
列表可以包含任何數(shù)量的原始,集合,sObjects,用戶定義和內置的Apex類型的記錄。 這是一個最重要的類型的集合,并且,它有一些系統(tǒng)方法,已經(jīng)專門定制使用List。 列表索引總是從0開始。這與Java中的數(shù)組是同義的。 列表應使用關鍵字“List”聲明。
例:
下面是包含一個原始數(shù)據(jù)類型列表(字符串)的列表,這是城市列表。
List ListOfCities = new List(); System.debug('Value Of ListOfCities'+ListOfCities);
聲明list的初始值是可選的,但是我們可以這樣做。 下面是同樣的例子。
List ListOfStates = new List {'NY', 'LA', 'LV'}; System.debug(' Value ListOfStates'+ListOfStates);
帳戶列表(sObject):
List AccountToDelete = new List ();//This will be null System.debug(' Value AccountToDelete'+AccountToDelete);
我們可以聲明嵌套List。 它可以達到五級。 這被稱為多維列表。
這是整數(shù)集合的列表。
List<List<Set>> myNestedList = new List<List<Set>>(); System.debug('value myNestedList'+myNestedList);
列表可以包含任何數(shù)量的記錄,但是對堆大小有一個限制,以防止性能問題和獨占資源。
有可用于列表的方法,我們可以在編程時使用以實現(xiàn)某些功能,例如計算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);
你也可以使用數(shù)組符號來聲明List,如下所示,但這不是Apex編程中的一般實踐:
String [] ListOfStates = new List();
Set是集合類型,它包含多個無序的唯一記錄數(shù)。 集合不能具有重復記錄。 像列表一樣,集合可以嵌套。
例如:
我們將定義公司銷售的一系列產(chǎn)品。
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);
它是一個鍵值對,其中包含每個值的唯一鍵。 鍵和值都可以是任何數(shù)據(jù)類型。
例如:
下面的示例表示產(chǎn)品名稱與產(chǎn)品代碼的映射。//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是區(qū)分大小寫的,例如ABC和abc將被視為不同的鍵,并被視為唯一。
更多建議: