[Dart]Map

한상욱·2022년 12월 20일
0

Dart문법

목록 보기
9/15
post-thumbnail

Map

이번 포스팅에서 다룰 자료형은 Map입니다. List자료는 자료를 저장하면 자동으로 인덱스가 지정이 되었다면, Map은 key와 value를 이용해서 값을 저장합니다. 예시를 들어보겠습니다. 어떤 사람에 대한 정보를 Map으로 표현하자면 다음과 같이 표현할 수 있을 것입니다.

void main() {
  Map<String, dynamic> HanSangWook = {
    'name': 'HanSangWook',
    'age': 24,
    'job': 'student'
  };
}

이 예시에서 자세히 들여보자면, key는 자료타입이 String으로 알 수 있지만, value는 다양한 자료형을 갖기 때문에 dynamic으로 제너릭값을 할당했습니다.

key를 이용한 value자료 출력

void main() {
  Map HanSangWook = {
    'name': 'HanSangWook',
    'age': 24,
    'job': 'student'};

  print(HanSangWook['name']);
}
>> HanSangWook

Map자료 갱신

value값은 dynamic의 자료형이기 때문에, 변수처럼 갱신이 가능합니다.

void main() {
  Map HanSangWook = {
    'name': 'HanSangWook',
    'age': 24,
    'job': 'student'};

  print(HanSangWook['name']);
  
  HanSangWook['name'] = '한상욱';
  
  print(HanSangWook['name']);
}
>> HanSangWook
>> 한상욱

Map의 key, value접근

key값에 접근하려면 다음과 같이 수행하면 됩니다.

void main() {
  Map<String, dynamic> HanSangWook = {
    'name': 'HanSangWook',
    'age': 24,
    'job': 'student'
  };
  
  print(HanSangWook.keys);
}
>> (name, age, job)

value값도 비슷하게 접근할 수 있습니다.

void main() {
  Map<String, dynamic> HanSangWook = {
    'name': 'HanSangWook',
    'age': 24,
    'job': 'student'
  };
  
  print(HanSangWook.values);
}
>> (HanSangWook, 24, student)

전체적인 구성요소로 접근하기 위해선 entries를 이용합니다.

void main() {
  Map HanSangWook = {
    'name': 'HanSangWook',
    'age': 24,
    'job': 'student'};

  print(HanSangWook.entries);
}
>> (MapEntry(name: HanSangWook), MapEntry(age: 24), MapEntry(job: student))

반복문을 이용한 접근

key, value, entries는 key와 반복문을 이용해서 접근할 수도 있습니다.

void main() {
  Map HanSangWook = {
    'name': 'HanSangWook',
    'age': 24,
    'job': 'student'};

  for (var key in HanSangWook.keys) {
    print(HanSangWook[key]);
  }
}
>> HanSangWook
>> 24
>> student

다만, entries를 이용할때는 key와 value에 모두 접근할 수 있습니다.

void main() {
  Map HanSangWook = {
    'name': 'HanSangWook',
    'age': 24,
    'job': 'student'};

  for (var entry in HanSangWook.entries) {
    print('${entry.key}, ${entry.value}');
  }
}
>> name, HanSangWook
>> age, 24
>> job, student
profile
자기주도적, 지속 성장하는 모바일앱 개발자가 되기 위해

0개의 댓글