본문 바로가기
Dart

[Dart] 언어 기본기 - 컬렉션편

by 가드 2022. 12. 5.
728x90

※ 시작 전 참고사항 : 다트패드 테스트 진행

컬렉션

컬렉션(Collection)은 다른 언어와 마찬가지로 다수의 데이터를 처리하는 자료구조로 대표적으로 3가지의 컬렉션 객체가 있다.

  • List : 데이터의 순서가 있고 중복을 허용한다.
  • Map : 키(Key)와 값(Value)로 구성된 클래스로서 키는 중복을 허용하지 않고 값은 중복을 허용한다.
  • Set : 데이터의 순서가 없고 중복을 허용하지 않는다.

List

void main() {
  List<String> names = ['에이', '비', '케이', '지'];
  print(names); // [에이, 비, 케이, 지]
  print(names[1]); // 비
  print(names.length); // list 개수는 4
  names.add('코코'); // names 리스트에 '코코' 추가
  names.remove('지'); // names 리스트에 '지' 삭제
  print(names); // [에이, 비, 케이, 코코]
  print(names.indexOf('코코')); // 3
  names.clear(); // names 전체 삭제
  print(names); // []
}
  • List<String> : List 객체의 String 제네릭 타입을 선언. (String만 저장할 수 있는 List 객체를 선언)
  • names[1] : 리스트의 1번 index의 객체를 조회한다.
  • names.length : 리스트의 크기(길이)를 조회한다.
  • names.add('코코') : '코코'를 리스트에 추가한다.
  • names.remove('지') : '지'를 리스트에서 삭제한다.
  • names.indexOf('코코') : 리스트 안에서 '코코'가 저장되어 있는 인덱스 값을 조회한다.
  • names.clear() : 리스트 전체 삭제

대표적인 함수들에 대해서 테스트를 진행해 봤다. 더 많은 함수들을 제공해 주는데 나머지는 천천히 알아가도록 하자.

Map

void main() {
  Map<String, String> nameMap = {'toto': '토토', 'kiki': '키키'};
  print(nameMap); // {toto: 토토, kiki: 키키}
  nameMap.addAll({'juju' : '주주'}); // map element 추가 방식 1
  nameMap['mimi'] = '미미'; // map element 추가 방식 2
  print(nameMap); // {toto: 토토, kiki: 키키, juju: 주주, mimi: 미미}
  print(nameMap['kiki']); // kiki key의 value인 키키를 가져온다.
  nameMap['kiki'] = '키키2'; // kiki key의 value 값 변경
  print(nameMap); // {toto: 토토, kiki: 키키2, juju: 주주, mimi: 미미}
  nameMap.remove('kiki'); // kiki 삭제
  print(nameMap); // {toto: 토토, juju: 주주, mimi: 미미}
  print(nameMap.keys); // (toto, juju, mimi)
  print(nameMap.values); // (토토, 주주, 미미)
  nameMap.clear(); // Map 전체 삭제
  print(nameMap); // {}
}
  • Map<String, String> nameMap : Map의 Key Type, Value Type을 정의
  • nameMap.addAll({'juju' : '주주'}) : Map 객체 전체 추가할 수 있는 함수로 N개의 element 추가가 가능하다.
  • nameMap['mimi'] = '미미' : Map에  'mimi' key, '미미' value를 추가
  • nameMap['kiki'] = '키키2' : 'kiki' value를 '키키2'로 변경
  • nameMap.remove('kiki') : 'kiki' key를 가진 element 삭제
  • nameMap.keys : Map 키 정보를 리스트로 가져온다.
  • nameMap.values : Map 값 정보를 리스트로 가져온다.
  • nameMap.clear() : Map element 전체 삭제

대표적인 함수들에 대해서 테스트를 진행해 봤다. 더 많은 함수들을 제공해 주는데 나머지는 천천히 알아가도록 하자.

Set

void main() {
  Set<String> names = {'코코', '주주', '키키'};
  print(names); // {코코, 주주, 키키}
  names.add('디디'); // 디디 추가
  print(names); // {코코, 주주, 키키, 디디}
  names.remove('디디'); // 디디 삭제
  print(names); // {코코, 주주, 키키}
  names.add('코코'); // 코코 추가 시도, 코코 중복으로 추가 실패
  print(names); // {코코, 주주, 키키}
  print(names.contains('주주')); // true
  names.clear(); // 전체 삭제
  print(names); // {}
}
  • names.add('디디') : 디디 추가
  • names.remove('디디') :  디디 삭제
  • names.add('코코') : 코코 추가 시도하지만 names에는 이미 코코 값이 있기 때문에 중복이므로 추가 실패
  • names.contains('주주') : '주주' 값이 있으면 true, 없으면 false
  •  names.clear() : 전체 삭제

리스트 컬렉션과 순서와 중복 차이가 있을 뿐 기본 함수들은 상당히 유사하다.

대표적인 함수들에 대해서 테스트를 진행해 봤다. 더 많은 함수들을 제공해 주는데 나머지는 천천히 알아가도록 하자.

300x250

댓글