본문 바로가기
카테고리 없음

BoxLang 컬렉션 다루기 – 리스트, 맵, 셋 기초 (7강)

by mystory55781 2025. 5. 15.

컬렉션이란 무엇일까요?

컬렉션(Collection)은 여러 데이터를 하나의 단위로 묶어 관리하는 자료구조를 의미합니다. 데이터를 효율적으로 저장하고, 빠르게 접근할 수 있게 해주는 컬렉션은 프로그래밍에서 매우 중요합니다. BoxLang에서는 주로 사용되는 리스트, , 컬렉션을 제공하며, 이를 통해 다양한 방식으로 데이터를 관리할 수 있습니다. 이번 강의에서는 이 세 가지 컬렉션에 대해 배워보겠습니다.

리스트 (List) 다루기

리스트(List)는 데이터를 순차적으로 저장하는 자료구조입니다. 리스트는 순서가 중요하며, 각 요소에 인덱스를 통해 접근할 수 있습니다. BoxLang에서는 리스트를 배열(array)처럼 사용할 수 있습니다.

리스트 정의하기

리스트는 var 키워드를 사용하여 정의할 수 있습니다. 리스트는 다양한 자료형을 저장할 수 있으며, 다음과 같이 정의할 수 있습니다.

var fruits = ["사과", "바나나", "체리"]

위 예제에서 fruits는 문자열을 저장하는 리스트입니다. 리스트는 0부터 시작하는 인덱스를 사용하여 각 요소에 접근할 수 있습니다.

리스트에서 요소 접근하기

리스트의 각 요소는 인덱스를 통해 접근할 수 있습니다. 예를 들어, 첫 번째 요소에 접근하려면 fruits[0]와 같이 사용합니다.

print(fruits[0])  // "사과" 출력

리스트는 인덱스를 사용하여 원하는 요소에 빠르게 접근할 수 있다는 장점이 있습니다.

리스트 수정하기

리스트의 요소는 수정이 가능합니다. 인덱스를 사용하여 특정 요소를 변경할 수 있습니다.

fruits[1] = "오렌지"  // 두 번째 요소를 "오렌지"로 변경

위 예제에서는 리스트의 두 번째 요소인 "바나나"를 "오렌지"로 변경하였습니다.

맵 (Map) 다루기

맵(Map)은 키와 값의 쌍으로 데이터를 저장하는 자료구조입니다. 키를 통해 값을 빠르게 찾을 수 있기 때문에, 키 기반 데이터 검색이 필요한 경우 매우 유용합니다.

맵 정의하기

맵은 var 키워드를 사용하여 정의하며, 키와 값은 쌍으로 저장됩니다. 아래 예시는 사람의 나이를 저장하는 맵을 정의한 것입니다.

var ages = {"홍길동": 25, "김철수": 30, "이영희": 28}

위 예제에서 ages는 이름을 키로, 나이를 값으로 저장한 맵입니다. 각 키에 해당하는 값에 접근할 수 있습니다.

맵에서 값 접근하기

맵에서 값을 접근할 때는 키를 사용합니다. 예를 들어, "홍길동"의 나이를 조회하려면 아래와 같이 사용합니다.

print(ages["홍길동"])  // 25 출력

맵은 키를 사용하여 빠르게 값을 조회할 수 있기 때문에, 데이터 검색이 매우 효율적입니다.

맵에 요소 추가하기

맵은 새로운 키-값 쌍을 추가할 수 있습니다. 예를 들어, "박지민"이라는 키와 32라는 값을 추가하려면 아래와 같이 작성합니다.

ages["박지민"] = 32  // 새로운 키-값 쌍 추가

이렇게 추가된 요소는 이후에 키를 통해 접근할 수 있습니다.

셋 (Set) 다루기

셋(Set)은 중복되지 않는 유일한 값들을 저장하는 자료구조입니다. 셋을 사용하면 중복된 데이터를 자동으로 제외하고, 데이터의 유일성을 보장할 수 있습니다.

셋 정의하기

셋은 중복을 허용하지 않는 자료구조이므로, 중복된 값을 추가하면 무시됩니다. 셋을 정의하는 방법은 다음과 같습니다.

var uniqueNumbers = {1, 2, 3, 4, 5}

위 예제에서 uniqueNumbers는 중복되지 않는 숫자들을 저장하는 셋입니다.

셋에 요소 추가하기

셋에 요소를 추가하려면 add() 메서드를 사용합니다. 예를 들어, 숫자 6을 추가하려면 아래와 같이 작성합니다.

uniqueNumbers.add(6)  // 셋에 숫자 6 추가

셋에 이미 존재하는 값은 추가되지 않으므로, 중복된 값은 자동으로 제외됩니다.

셋에서 요소 확인하기

셋에서 특정 값이 존재하는지 확인하려면 contains() 메서드를 사용합니다.

print(uniqueNumbers.contains(3))  // true 출력
print(uniqueNumbers.contains(7))  // false 출력

셋에 특정 값이 포함되어 있는지 확인할 때 유용합니다.

리스트, 맵, 셋의 차이점

각각의 컬렉션은 사용 목적에 따라 다릅니다. 이들 사이의 차이점을 간단히 정리해 보겠습니다:

  • 리스트 (List): 순서가 있는 데이터 집합으로, 인덱스를 통해 각 요소에 접근합니다. 중복된 값을 허용합니다.
  • 맵 (Map): 키-값 쌍으로 데이터를 저장하며, 키를 통해 빠르게 값을 조회할 수 있습니다. 중복된 키는 허용되지 않습니다.
  • 셋 (Set): 중복되지 않는 유일한 값을 저장합니다. 순서는 중요하지 않으며, 값을 빠르게 추가하거나 확인할 수 있습니다.

실전 예제 – 학생 정보 관리 시스템

이번에는 간단한 학생 정보 관리 시스템을 만들어 보겠습니다. 학생의 이름을 키로, 학년과 성적을 값으로 저장하는 맵을 사용하고, 학생의 과목을 셋으로 관리할 수 있습니다.

var studentInfo = {
    "홍길동": { "grade": 3, "subjects": {"수학", "과학", "영어"} },
    "김철수": { "grade": 2, "subjects": {"국어", "수학", "체육"} }
}

위 예제에서 학생의 이름을 키로 하고, 값으로는 학년과 과목을 저장하는 구조입니다. 셋을 사용하여 각 학생의 과목을 관리하고 있습니다.

마무리 및 다음 강의 예고

이번 강의에서는 BoxLang의 컬렉션인 리스트, , 을 배웠습니다. 각각의 컬렉션을 상황에 맞게 활용하여 효율적인 데이터 관리를 할 수 있습니다.

다음 강의에서는 파일 입출력에러 처리에 대해 배워볼 예정입니다. 데이터를 외부 파일에 저장하고 읽어오는 방법을 배우고, 발생할 수 있는 에러를 처리하는 방법도 알아보겠습니다. 많은 기대 부탁드립니다!