학습
Dart 셋 기초
Dart 셋 기초 — 초급
Dart 셋 기초
1. 도입 (왜 배워야 하는가)
셋(Set)은 데이터 구조 중 하나로, 중복된 값을 허용하지 않고 고유한 값으로만 구성됩니다. 실무에서 셋은 특히 데이터의 유일성을 보장해야 할 때 유용하게 사용됩니다. 예를 들어, 쇼핑몰에서 고객이 장바구니에 담은 상품의 중복을 막기 위해 셋을 사용할 수 있습니다. 셋을 모른다면 중복된 데이터가 발생할 수 있으며, 이는 데이터의 정확성을 해치는 결과를 초래할 수 있습니다. 따라서, 셋을 이해하고 활용하는 것은 프로그래머에게 중요한 기술입니다.
2. 핵심 개념 설명
셋(Set)의 주요 개념은 다음과 같습니다:
- 중복 불허: 셋은 같은 값을 두 번 저장할 수 없습니다. 이는 마치 사람들이 모여 있을 때 같은 사람이 두 번 간주되지 않는 것과 같습니다.
- 순서 없음: 셋은 저장된 값의 순서를 보장하지 않습니다. 이는 마치 주머니에 동전을 넣을 때 동전의 순서가 중요하지 않은 것과 비슷합니다.
| 용어 | 설명 |
|---|---|
| 셋(Set) | 중복된 값을 허용하지 않는 데이터 구조 |
| 요소 | 셋에 포함된 개별 값 |
| 집합 연산 | 두 개 이상의 셋을 결합하거나 비교하는 연산 (합집합, 교집합 등) |
3. 기본 코드 예제
셋의 기본 사용법을 알아보겠습니다.
void main() {
// 셋 생성
Set<String> fruits = {'사과', '바나나', '오렌지'};
// 셋에 요소 추가
fruits.add('포도');
// 중복된 요소 추가 시도
fruits.add('사과');
// 셋 출력
print(fruits);
}
실행 결과:
{사과, 바나나, 오렌지, 포도}
Set<String> fruits = {'사과', '바나나', '오렌지'};: 문자열 타입의 셋을 생성하고 초기값을 설정합니다.fruits.add('포도');: '포도'라는 요소를 셋에 추가합니다.fruits.add('사과');: 이미 존재하는 '사과'를 추가하려고 시도하지만, 중복이므로 무시됩니다.print(fruits);: 셋의 내용을 출력합니다.4. 실전 활용 예제
예제 1: 쇼핑몰 장바구니
장바구니에 담긴 상품의 중복을 막기 위해 셋을 사용할 수 있습니다.
void main() {
Set<String> cart = {};
void addToCart(String item) {
if (cart.add(item)) {
print('$item이 장바구니에 추가되었습니다.');
} else {
print('$item은 이미 장바구니에 있습니다.');
}
}
addToCart('사과');
addToCart('바나나');
addToCart('사과'); // 중복 추가 시도
}
예제 2: 사용자 이메일 관리
중복된 이메일을 관리하는 간단한 프로그램입니다.
void main() {
Set<String> emails = {};
void addEmail(String email) {
if (emails.add(email)) {
print('$email이 추가되었습니다.');
} else {
print('$email은 이미 존재하는 이메일입니다.');
}
}
addEmail('[email protected]');
addEmail('[email protected]');
addEmail('[email protected]'); // 중복 추가 시도
}
5. 흔한 실수와 주의사항
실수 1: 셋의 중복 추가 시도
잘못된 코드:
fruits.add('사과'); // 중복된 요소 추가
올바른 코드: 셋은 중복된 요소를 허용하지 않기 때문에, 추가 시도는 무시됩니다.
실수 2: 셋의 순서 혼동
잘못된 코드:
print(fruits[0]); // 인덱싱 시도
올바른 코드:
셋은 순서를 보장하지 않으므로 인덱스를 사용할 수 없습니다. 대신 for 루프를 사용해야 합니다.
6. 정리
add 메서드를 사용하여 요소를 추가하고, 중복된 요소는 무시됩니다.