Flutter

Map / Set

yoooon1212 2024. 9. 4. 10:56

 

 

 

Map


void main() {

  //Map은 키/값을 사용한다.
  Map<String, int> myDict = {'홍길동' : 1, "포도" : 2, '사과' : 3};
  print(myDict.runtimeType);
  
  // 새로운 키 값 추가하는 방법
  myDict['케이트'] = 4;
  print(myDict['케이트']);

  // 읽기
  print(myDict['홍길동']); // 1 출력
  print(myDict.keys); // 키 전체 출력
  print(myDict.values); // 값 전체 출력
  print(myDict.entries); // 키 + 값 전체 출력

  // 수정
  myDict['홍길동'] = 100;

  // 삭제
  myDict.remove('홍길동');
  print(myDict.keys); // 키(홍길동) 삭제 되어 출력
  print(myDict); // 키 + 값 전체 출력

  // Map에 특정 키/ 값이 있는지 확인하는 방법
  print(myDict.containsKey('홍길동')); // false 출력
  print(myDict.containsKey('케이트')); // true 출력

  // Map을 다룰 때 다른 데이터 타입으로 변환해야 하는 경우 --> List
  // 리스트로 변환하기
  var myDictKeys = myDict.keys;
  var myDictValues = myDict.values;
  print('데이터 타입 확인1 : ${myDictKeys.runtimeType}'); // _CompactIterable<String> 출력
  List<String> myDictKeyList = myDictKeys.toList();
  print('데이터 타입 확인2 : ${myDictKeyList.runtimeType}'); // List<String> 출력
  // List<String> myDictKeyList = myDict.keys.toList();

  // 기존에 존재하는 map에 다른 map 데이터를 일괄 추가해야 한다면
  Map<String, int> myDict2 = {'한국' : 1, '일본' : 2};
  myDict.addAll(myDict2);
  print("---------------------------");
  print(myDict); // myDict에서 myDict2 내용이 추가됨. --> {포도: 2, 사과: 3, 케이트: 4, 한국: 1, 일본: 2}
}

 

 

set

void main() {

  // List -> [], Map -> {}
  Set<String> data = {'a', 'b', 'c', 'a'};
  print(data); // a,b,c

  data.add('d');
  data.remove('a');
  print(data); // b,c,d

  // Set 계열을 update 개념이 없기 때문에 clear 하고 add 하기

  // 전체 비우기
  data.clear();
  print(data); // {}
}

 

 

 

void main() {

  // List 문제
  List<int> numbers = [3, 7, 2, 10, 5]; // 인덱스 연산자
  int max = numbers[0];
  for(int i = 1; i <numbers.length; i++){
    if(numbers[i] > max) {
      max = numbers[i];
    }
  }
  print('최대값 ${max}');

  // Map 문제
  Map<String, int> grade = {'철수':85, '영희':90, '민수':70};
      // / grade.values.length;
}