Apex-컬렉션

컬렉션은 여러 레코드를 저장할 수있는 변수 유형입니다. 예를 들어 목록은 여러 개의 계정 개체 레코드를 저장할 수 있습니다. 이제 모든 컬렉션 유형에 대한 자세한 개요를 살펴 보겠습니다.

기울기

목록에는 기본, 컬렉션, sObject, 사용자 정의 및 Apex 유형에 내장 된 레코드가 얼마든지 포함될 수 있습니다. 이것은 가장 중요한 컬렉션 유형 중 하나이며 List와 함께 사용하도록 특별히 조정 된 몇 가지 시스템 메서드가 있습니다. 목록 인덱스는 항상 0으로 시작합니다. 이것은 Java의 배열과 동의어입니다. 목록은 키워드 '목록'으로 선언되어야합니다.

Example

아래는 도시 목록 인 원시 데이터 유형 (문자열) 목록을 포함하는 목록입니다.

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

중첩 된 목록도 선언 할 수 있습니다. 5 단계까지 올라갈 수 있습니다. 이를 다차원 목록이라고합니다.

이것은 정수 세트의 목록입니다.

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

목록에는 여러 레코드가 포함될 수 있지만 성능 문제를 방지하고 리소스를 독점하기 위해 힙 크기에 제한이 있습니다.

목록에 대한 방법

List의 크기 계산, 요소 추가 등과 같은 일부 기능을 수행하기 위해 프로그래밍하는 동안 사용할 수있는 List에 사용할 수있는 메서드가 있습니다.

다음은 가장 자주 사용되는 방법입니다.

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

다음 예제는 이러한 모든 방법의 사용을 보여줍니다.

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

아래에 주어진 것처럼 배열 표기법을 사용하여 List를 선언 할 수도 있지만 이것은 Apex 프로그래밍에서 일반적인 관행이 아닙니다.

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

세트

집합은 여러 개의 정렬되지 않은 고유 레코드를 포함하는 컬렉션 유형입니다. 세트는 중복 레코드를 가질 수 없습니다. 목록과 마찬가지로 집합도 중첩 될 수 있습니다.

Example

우리는 회사가 판매하는 제품 세트를 정의 할 것입니다.

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

지도

각 값에 대한 고유 키를 포함하는 키 값 쌍입니다. 키와 값은 모든 데이터 유형이 될 수 있습니다.

Example

다음 예제는 제품 코드가있는 제품 이름의 맵을 나타냅니다.

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

맵 값은 순서가 없을 수 있으므로 값이 저장되는 순서에 의존해서는 안되며 항상 키를 사용하여 맵에 액세스해야합니다. 맵 값은 null 일 수 있습니다. String 선언시 매핑 키는 대소 문자를 구분합니다. 예를 들어 ABC와 abc는 다른 키로 간주되고 고유 한 것으로 처리됩니다.