컬렉션 사용
학습 목표
이 유닛을 완료하면 다음을 수행할 수 있습니다.
- 목록을 선언하고 초기화합니다.
- 목록에 항목을 추가하는 두 가지 방법을 알아봅니다.
컬렉션
컬렉션은 여러 항목을 저장할 수 있는 변수 유형입니다. 차에 관한 예시를 들자면, 내부에 여러 개의 각설탕이 들어 있는 설탕 그릇이 있습니다. 이때 설탕 그릇은 컬렉션, 각설탕은 해당 컬렉션에 저장되는 항목으로 간주됩니다.
Apex 컬렉션에는 목록, 세트 및 맵이라는 세 가지 유형이 있지만 이 모듈에서는 목록에 중점을 둡니다.
목록
Apex 목록은 쇼핑 목록처럼 동일한 유형의 항목이 정렬된 그룹입니다.
- 차
- 설탕
- 꿀
- 우유
쇼핑 목록의 각 항목은 문자열이며 각 항목은 목록 내 위치가 있습니다. 목록을 선언하려면 몇 가지가 필요합니다. 목록 예약어, <> 문자 내 데이터 형식(모든 항목의 데이터 형식이 동일해야 함) 및 예약어 new를 사용합니다. 이 문장의 끝에는 필수 괄호가 있습니다.
빈 목록 선언
- Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
- 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
//Declare the groceries list List<String> groceries = new List<String>(); //The output for this statement is an empty list, (). System.debug('Groceries Value: ' + groceries);
- Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
- 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.
코드를 실행할 때 출력이 ()인 것을 보셨을 것입니다. 목록에 아무것도 추가하지 않았으므로 출력이 비어 있는 상태입니다. groceries
목록을 선언할 때 항목을 추가할 수 있는 하나의 빈 공간을 만들었습니다.
크기가 설정된 목록 선언
목록의 길이를 정확히 알고 있다면 목록을 선언할 때 크기를 설정할 수 있습니다. 다음과 같이 데이터 형식 뒤에 오는 괄호([ ]) 안에 크기를 포함하면 됩니다.
이 코드는 groceries라는 문자열 목록을 선언하고 그 크기를 4개의 문자열로 설정합니다. 빈 groceries 목록은 다음과 같습니다.
각 항목의 순차적 위치는 인덱스라는 숫자입니다. 인덱스는 항목을 참조하는 방식입니다. 우리는 대부분 숫자 세는 법을 배울 때 1부터 배웁니다. 하지만 많은 프로그래밍 언어에서는 숫자가 0부터 시작됩니다. 따라서 이제 Apex 코드를 작성하면 목록이 다음과 같이 보일 것입니다.
- 차
- 설탕
- 꿀
- 우유
목록에서 특정 항목을 가리키는 데 사용하는 인덱스는 차의 경우 인덱스 0, 설탕의 경우 인덱스 1, 꿀의 경우 인덱스 2가 되는 식입니다.
다음과 같이 목록에서 특정 항목을 인덱스(목록 내 위치)로 참조하면 됩니다.
- Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
- 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
String[] groceries = new String[4]; System.debug('Initialized groceries: ' + groceries); System.debug('Item 0: ' + groceries[0]);
- Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
- 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.
목록의 첫 번째 항목 값은 null입니다. 목록에 항목을 몇 개 더 추가해 보겠습니다.
목록 초기화
목록 초기화란 목록에 초기 값을 할당하는 것입니다. 목록에 항목을 추가하는 방법은 두 가지입니다.
- 목록을 선언하고 초기화합니다.
//Sets the first item in the list to 'Tea' List<String> groceries = new List<String>{'Tea'};
- 빈 목록을 선언하고 나중에 값을 추가합니다.
List<String> groceries = new List<String>(); groceries.add('Tea');
목록 선언 및 초기화
값을 사용하여 목록을 초기화하는 구문은 빈 목록을 선언하는 것과 유사합니다. 차이점은 괄호( ( )
)를 사용하는 대신 중괄호( { }
)를 사용하여 값을 추가하는 것입니다.
- Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
- 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
//Declare the groceries list List<String> groceries = new List<String>{'Tea','Sugar','Honey','Milk'}; //The output for this statement is Tea, Sugar, Honey, Milk System.debug('Groceries: ' + groceries);
- Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
- 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.
빈 목록을 선언하고 나중에 값 추가
하지만 나중에 항목을 추가하려면 어떻게 해야 할까요? Apex는 목록으로 작업할 수 있는 방법을 제공합니다. 추가 방법을 사용하여 식료품 항목을 groceries 목록에 추가해 보겠습니다.
- Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
- 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
//Create the groceries list List<String> groceries = new List<String>(); //The output for this statement is null System.debug('Groceries: ' + groceries); //Use the add method to add an element to the list groceries.add('Tea'); groceries.add('Sugar'); groceries.add('Honey'); groceries.add(2, 'Milk'); //The output for this statement is Tea, Sugar, Milk, Honey System.debug('Groceries: ' + groceries);
- Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
- 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.
groceries
및 add
사이에 점(“.”)이 있는 것을 발견하셨나요? Apex는 점 표기법을 사용합니다. 점 표기법은 여러 가지 용도로 사용됩니다. 줄 8에서 Apex가 제공하는 add
방법을 점으로 groceries
목록에 연결하여 항목(Tea)을 목록에 추가합니다.
줄 11은 특정 인덱스(위치)에 항목을 삽입하여 목록에 항목을 추가하는 또 다른 방법을 보여 줍니다.
Apex 코드로 작업하다 보면 어떤 방법을 사용할지 결정하는 방법을 배우게 됩니다. 하지만 이 유닛에서 기본 사항을 배우면 시작하는 데 도움이 될 수 있습니다.
목록 이해
목록에 항목을 추가하는 방법마다 약간씩 다른 결과가 나오며, 때로는 예상치 못한 결과가 발생하기도 합니다. 다음과 같이 연습해 보세요.
- Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
- 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
String[] groceries = new String[4]; System.debug('Groceries: ' + groceries); groceries.add('Tea'); groceries.add('Sugar'); System.debug('Added 2 items: ' + groceries); groceries.add(1, 'Honey'); System.debug('Added Honey in index 1: ' + groceries); System.debug('Item 0: ' + groceries[0]);
- Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
- 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.
다음과 같이 흥미로운 결과를 얻었습니다.
줄 4와 5에 두 개의 문자열을 추가할 때 인덱스를 지정하지 않았기 때문에, 목록 끝에 Tea와 Sugar가 추가되어 목록 크기가 4개의 문자열에서 6개의 문자열로 늘어났습니다. 줄 8에서 명시적으로 Honey에 대해 인덱스 1을 지정했는데 왜 Honey가 목록의 첫 번째에 있지 않을까요? 프로그래밍에서는 항상 1이 아닌 0부터 세기 시작한다는 점을 기억하세요. 줄 11에서 목록의 첫 번째 인덱스는 0으로, 현재 null
값을 포함하고 있습니다.
코드를 작성하는 것은 수학 문제를 푸는 것과 매우 유사합니다. 방정식은 하나이지만 푸는 방법은 매우 다양합니다. 이 유닛에서는 Apex에서 목록으로 작업하는 여러 방법이 있다는 점을 알았습니다. 목록을 선언하거나 초기화하든, 목록의 특정 값을 참조하든 여러분의 선택에 달려 있습니다. 옵션이 너무 많다고 느껴지나요? 걱정하지 마세요. Apex에 더 익숙해지면 다양한 방법을 시도해 보세요. 어떤 상황에 어떤 방법이 가장 적합한지를 더 잘 이해하게 될 것입니다.