컬렉션(자료구조)

 

목차

    1. dart 에서 제공 하는 자료구조와 특징

    컬렉션은 여러 값을 하나의 변수에 저장할 수 있는 타입을 의미한다.

     

    List (리스트):

    • 여러 값을 순서대로 저장하고, 인덱스 번호로 접근 가능한 컬렉션 타입.

    Map (맵):

    • '키'와 '값'의 형태로 저장하고,'키'를 기반으로 매칭되는 '값'을 바로 접근 가능한 컬렉션 타입.

    Set (셋):

    • 중복된 데이터를 제거하고 데이터를 저장하는 컬렉션 타입.
    List 연습
    // 코드의 진입점
    void main() {
    
      // List 자료구조 사용해보기
      // 선언과 동시에 초기화
      List<String> myList = ['홍길동', '포도', '사과'];
    
      // R
      print(' LIST DATA $myList');
    
      // add 추가
      myList.add('김유신');
    
      // read : 리스트 계열은 인덱스 번호를 제공 즉, 인덱스 연산 가능
      print(myList[1]);
    
      // update
      myList[1] = '신사임당';
      print(myList[1]);
    
      // delete , 2가지 방식 (키값으로 제거 가능, 인덱스 번호로 제거 가능)
      myList.remove('신사임당');
      myList.removeAt(0);
      print(myList);
    
      myList.remove('신사임당1111111');
      //myList.removeAt(100);  오류 발생
    
      print(myList.length);  //인덱스 길이 는 = n - 1 = 0, 1  
    
    }
    Map 연습
    void main() {
    
      // Map은 키/값 을 사용한다.
      Map<String, int> myDict = {'홍길동' : 1, "포도" : 2, '사과': 3};
      print(myDict.runtimeType);
    
      // 맵에 새로운 키/값 추가 하는 방법
      myDict['케이트'] = 4;
      print(myDict['케이트']);
    
      // 읽기
      print(myDict['홍길동']);
      print(myDict.keys);
      print(myDict.values);
      print(myDict.entries);
      // 수정
      myDict['홍길동'] = 100;
      // 삭제
      myDict.remove('홍길동');
      print(myDict);
      
      // map 에 특정 키/값이 있는지 확인 하는 방법 
      print(myDict.containsKey('홍길동'));
      print(myDict.containsKey('케이트'));
    
      // Map 을 다룰 때 다른 데이터 타입으로 변환해야 하는 경우 --> List
      // 리스트로 변환 하기
      var myDictKeys = myDict.keys;
      var myDictValues = myDict.values;
      print(' 데이터 타입 확인1 :  ${myDictKeys.runtimeType}');
      List<String> myDictKeyList = myDictKeys.toList();
      print(' 데이터 타입 확인2 :  ${myDictKeyList.runtimeType}');
      //List<String> myDictKeyList = myDict.keys.toList();
    
      // 기존에 존해하는 map 다른 map 데이터를 일과 추가 해야 된다면
      Map<String, int> myDict2 = {'한국': 1, '일본': 2};
      myDict.addAll(myDict2);
    
      print('---------------------');
      print(myDict);
    
    }
    Set 연습
    void main() {
    
      // List -> [], Map -> {}, , Set -> {}
      Set<String> data = {'a', 'b', 'c', 'a'};
      print(data);
      data.add('d');
      data.remove('a');
      print(data);
    
      // 전체 비우기
      data.clear();
      print(data);
    
    }

    2. 문제

    List 자료구조 문제:
    문제: 리스트에서 최댓값 찾기
    주어진 리스트에서 최댓값을 찾는 함수를 작성하세요.
    입력
    ● 정수로 이루어진 리스트
    출력
    ● 리스트에서 최댓값
    입력: [3, 7, 2, 10, 5]
    출력: 10
    Map 자료구조 문제:
    문제: 학생 성적 평균 계산하기
    주어진 학생들의 성적을 담은 맵에서 성적의 평균을 계산하세요.
    입력
    ● 학생 이름을 키로, 성적을 값으로 가지는 맵
    출력
    ● 학생들의 성적 평균
    입력: {'철수': 85, '영희': 90, '민수': 70}
    출력: 81.66666666666667
    문제: 중복 단어 제거하기
    문자열로 이루어진 리스트에서 중복된 단어를 제거하세요.
    입력
    ● 문자열로 이루어진 리스트
    출력
    ● 중복이 제거된 리스트
    입력: ['apple', 'banana', 'apple', 'grape', 'banana', 'orange']
    출력: ['apple', 'banana', 'grape', 'orange']
    void main() {
    
      List<int> numbers = [3, 7, 2, 10, 5];
      numbers.sort();
      print(numbers[numbers.length - 1]);
    
      Map<String, int> myDict = {'철수': 85, '영희': 90, '민수': 70};
      List<int> score = myDict.values.toList();
      double sum = 0;
      for (int i in score){
        sum += i;
      }
      double avg = sum / score.length;
      print(avg);
    
      List<String> names = ['apple', 'banana', 'apple', 'grape', 'banana', 'orange'];
      Set<String> names2 = {};
      for (String name in names){
        names2.add(name);
      }
    
      print(names2.toList());
      
    }

    목차로 돌아가기

     

    'Flutter > 기초' 카테고리의 다른 글

    dart Null Safety  (0) 2024.09.06
    프로젝트 구조 살펴보기  (0) 2024.09.04
    변수  (3) 2024.09.03