컬렉션 (Collection) - Set, Map

Eungae's avatar
Dec 08, 2025
컬렉션 (Collection) - Set, Map

Set

Set<타입> [변수 이름] = {요소};

수학에서의 집합에 해당. 중복되지 않은 값들이 묶인 형태.

Set<int> numbers = {1, 2, 3, 4, 5};

Set<int> numbers = {}; // 공집합도 가능.또는 var names = <String>{}; 도 가능

var numbers = {}; 는 안 된다. => Map 타입이 되어버린다.

  • 각각의 요소는 모두 동일한 타입이어야 한다. 다른 타입인 요소가 들어오면 오류 발생.

  • 요소들의 순서가 보장되지 않는다. == index 개념이 없다.

  • 중복된 값이 있으면 하나를 제외하고는 모두 무시한다.

Set<String> actors = {'박정민', '구교환', '주지훈', '박정민', '이동욱', '박정민'};
print(actors); // {박정민, 구교환, 주지훈, 이동욱}

.length

요소의 개수 구하기

Set<String> actors = {'박정민', '구교환', '주지훈', '박정민', '이동욱', '박정민'};
print(actors.length); // 4

.isEmpty / .isNotEmpty

Set<String> seobuway = {'즈므로스터리', '비앤타', '비노에올리바'};
print(seobuway.isEmpty); // false
print(seobuway.isNotEmpty); // true

.add() / .addAll()

void main () {
Set<String> seobuway = {'즈므로스터리', '비앤타', '비노에올리바'};
seobuway.add("그린혼");
print(seobuway.join(', '));
} // 즈므로스터리, 비앤타, 비노에올리바, 그린혼
void main () {
Set<String> seobuway = {'즈므로스터리', '비앤타', '비노에올리바', '그린혼'};
Set<String> newbies = {'잔물결', '명경지수', '지구리워크', '브레드브레드바나나', '윤슬서림', '바담장', '수수하', '딥마켓', '몬테가든', '스미야끼센'};
  seobuway.addAll(newbies);
  
  print(seobuway.length); // 14
  print(seobuway.join(', ')); // 즈므로스터리, 비앤타, 비노에올리바, 그린혼, 잔물결, 명경지수, 지구리워크, 브레드브레드바나나, 윤슬서림, 바담장, 수수하, 딥마켓, 몬테가든, 스미야끼센
}

.remove() / .removeAll()

void main () {
Set<String> seobuway = {'즈므로스터리', '비앤타', '비노에올리바', '그린혼', '명경지수', '지구리워크', '브레드브레드바나나', '윤슬서림', '바담장', '수수하', '딥마켓', '몬테가든', '스미야끼센', '잔물결'};
  seobuway.remove("잔물결"); 
  print(seobuway.length);
  print(seobuway.join(', '));
}

/*
13
즈므로스터리, 비앤타, 비노에올리바, 그린혼, 명경지수, 지구리워크, 브레드브레드바나나, 윤슬서림, 바담장, 수수하, 딥마켓, 몬테가든, 스미야끼센
*/
void main () {
Set<String> seobuway = {'즈므로스터리', '비앤타', '비노에올리바', '그린혼', '명경지수', '지구리워크', '브레드브레드바나나', '윤슬서림', '바담장', '수수하', '딥마켓', '몬테가든', '스미야끼센', '잔물결'};
  print(seobuway.length);
  
  seobuway.removeAll({'비앤타','지구리워크','바담장','잔물결'});
  print(seobuway.length);
  
  print(seobuway.join(', '));
}

/*
14
10
즈므로스터리, 비노에올리바, 그린혼, 명경지수, 브레드브레드바나나, 윤슬서림, 수수하, 딥마켓, 몬테가든, 스미야끼센
*/

.contains() / .containsAll()

void main () {
Set<String> seobuway = {'즈므로스터리', '비앤타', '비노에올리바', '그린혼', '명경지수', '지구리워크', '브레드브레드바나나', '윤슬서림', '바담장', '수수하', '딥마켓', '몬테가든', '스미야끼센', '잔물결'};
  
  print(seobuway.contains("몬테가든")); // true
  print(seobuway.contains("명주상회")); // false
  
Set<String> myungjudan = {"명주상회", "보리울림", "봉봉방앗간"};
  print(seobuway.containsAll(myungjudan)); // false
  
seobuway.addAll(myungjudan);
  print(seobuway.length); // 17
  print(seobuway.containsAll(myungjudan)); // true
}

Map

Map<key type : value type> name = { key, value };

Map<String, int> price = {"생맥주" : 5000, "빅웨이브" : 8000, "듀체스" : 14000};
  • key들과 value들은 각각 타입이 같아야 한다.

  • keyvalue는 서로 다른 타입으로 구성할 수 있다.

  • key는 중복될 수 없지만 value는 중복될 수 있다.

.length

요소의 개수 구하기

Map<String, int> price = {"생맥주" : 5000, "빅웨이브" : 8000, "듀체스" : 14000};
print(price.length); // 3

.isEmpty / .isNotEmpty

Map<String, int> price = {"생맥주" : 5000, "빅웨이브" : 8000, "듀체스" : 14000};
  print(price.isEmpty); // false
  print(price.isNotEmpty); // true

name[key]를 통해 검색 가능

Map<String, int> price = {"생맥주" : 5000, "빅웨이브" : 8000, "듀체스" : 14000};
  print(price["빅웨이브"]); // 8000
  print(price["듀체스"]); // 14000

name[key] = value; 를 통해 키의 값 수정

Map<String, int> price = {"생맥주" : 5000, "빅웨이브" : 8000, "듀체스" : 14000};
  
  price["듀체스"] = 16000;
  print(price["듀체스"]); // 16000

name[key] = value;를 통해 새로운 키와 값의 쌍 추가

Map<String, int> beer = {"생맥주" : 5000, "빅웨이브" : 8000, "듀체스" : 14000};
  
  beer["카스제로"] = 5000;
  print(beer); // {생맥주: 5000, 빅웨이브: 8000, 듀체스: 14000, 카스제로: 5000}

.remove()

Map<String, int> beer = {"생맥주" : 5000, "빅웨이브" : 8000, "듀체스" : 14000};
  
  beer.remove("생맥주");
  print(beer); // {빅웨이브: 8000, 듀체스: 14000}
  print(beer["생맥주"]); // null

.containsKey()

void main () {
Map<String, int> beer = {"생맥주" : 5000, "빅웨이브" : 8000, "듀체스" : 14000};
  
  print(beer.containsKey("생맥주")); // true
  print(beer.containsKey("칭따오")); // false
}

.values

Map<String, int> beer = {"생맥주" : 5000, "빅웨이브" : 8000, "듀체스" : 14000, "카스제로" : 5000};
  
  print(beer.values); // (5000, 8000, 14000, 5000)
  print(beer.values.join(', ')); // 5000, 8000, 14000, 5000

Share article

나새끼메이커