본문 바로가기
자기계발/IT

[Flutter/플러터] 다트(Dart) 언어 스프레드 연산자, Map, Set 알아보기

by KTC 2023. 2. 24.

목차

    반응형

    안녕하세요!

    다트 언어의 스프레드 연산자, Map, Set에 대해 알아보겠습니다.

     

    스프레드 연산자

    • 스프레드 연산자(...)는 컬렉션을 펼쳐주는 연산자
    • 다른 컬렉션 안에 컬렉션을 삽입할 때 사용
      var items = ['모니터', '키보드', '마우스'];
      
      var items2 = ['스피커', ...items, '헤드셋'];  //스피커, 모니터, 키보드, 마우스, 헤드셋

     

    • Set에 리스트를 담으면 자동으로 중복 제거
      final items = [1, 2, 2, 3, 3, 4, 5];
      
      final myNum = {...items, 6, 7}; //1, 2, 3, 4, 5, 6, 7

     

    Map

    • 순서가 없고 탐색이 빠른 자료구조 컬렉션
    • 키(key)와 값(value)의 쌍으로 이루어져 있어 키를 이용하여 값을 빠르게 검색
    • 만약 요청한 키에 해당하는 값이 없으면 null을 반환
    void main() {
      //Map<String, String> cityMap = { ...... };
      var cityMap = {
        '한국':'부산',
        '미국':'시카고',
        '영국':'런던'
      };
    
      cityMap['한국'] = '서울';
    
      print(cityMap.length);  //3
      print(cityMap['미국']); //시카고
      print(cityMap['러시아']);  //null
    
      cityMap['러시아'] = '모스크바';  //새로운 값 추가
      print(cityMap['러시아']);  //모스크바
    }

     

    Set

    • 집합을 표현하는 자료구조 컬렉션
    • add(), remove() 메서드로 집합에 추가하거나 삭제 가능
    • contains() 메서드는 찾고자 하는 자료가 집합에 있는지 불리언 타입으로 반환
    • 중복을 허용하지 않음
    void main() {
      //Set<String> citySet = {....};
      var citySet = {'서울', '부산', '인천', '대구'};
    
      citySet.add('대전');  //추가
      citySet.remove('인천'); //삭제
    
      print(citySet.contains('서울'));  //true
      print(citySet.contains('광주'));  //false
    
    }

     

    • 빈 Set이나 빈 Map을 작성할 때 값 없이 {}만 작성하면 Set이 아닌 Map으로 인식
    void main() {
    
      var mySet = <String>{}; //Set<String>
    
      var mySet2 = {};  //Map<dynamic, dynamic>
      
      //타입 확인
      print(mySet.runtimeType);
      print(mySet2.runtimeType);
    }
    반응형