Apex - 集合

2019-10-26 16:26 更新

集合是可以存儲多個記錄數(shù)的變量類型。 例如,List可以存儲多個Account對象的記錄。 讓我們詳細了解所有集合類型。


Lists 列表

列表可以包含任何數(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ù)量的記錄,但是對堆大小有一個限制,以防止性能問題和獨占資源。


Methods For Lists 列表方法

有可用于列表的方法,我們可以在編程時使用以實現(xiàn)某些功能,例如計算List的大小,添加元素等。


下面是一些最常用的方法。

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


以下示例演示如何使用所有這些方法:

//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();


Sets 集合

Set是集合類型,它包含多個無序的唯一記錄數(shù)。 集合不能具有重復記錄。 像列表一樣,集合可以嵌套。


例如:

我們將定義公司銷售的一系列產(chǎn)品。

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


Methods for Sets 集合的方法

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);


Maps 地圖

它是一個鍵值對,其中包含每個值的唯一鍵。 鍵和值都可以是任何數(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);


Methods for Maps 地圖的方法

下面是一些例子,演示了我們可以使用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將被視為不同的鍵,并被視為唯一。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號