Map(HashMap)에 key-value 값을 추가하는 방법을 소개합니다.
1. Map[key]를 이용한 방법
Map[key] = value
와 같은 방식으로 key-value
를 Map에 추가할 수 있습니다.
또한 동일한 방식으로 Map에 이미 존재하는 key의 value를 업데이트할 수 있습니다.
void main() {
Map<String, int> map = {};
map['a'] = 0;
map['b'] = 1;
map['c'] = 2;
print(map);
map['a'] = 10;
print(map);
}
Output:
{a: 0, b: 1, c: 2}
{a: 10, b: 1, c: 2}
2. putIfAbsent()를 이용한 방법
Map.putIfAbsent(key, function)
는 Map에 key가 존재하지 않을 때 function의 리턴 값이 등록됩니다.
아래와 같이 key-value
값을 Map에 추가할 수 있습니다.
void main() {
Map<String, int> map = {};
map.putIfAbsent('a', () => 0);
map.putIfAbsent('b', () => 1);
map.putIfAbsent('c', () => 2);
print(map);
}
Output:
{a: 0, b: 1, c: 2}
만약 putIfAbsent()
로 이미 존재하는 key에 대해서 다른 값으로 추가하려고 하면, 값이 업데이트 되지 않고 동일 아이템이 추가되지도 않습니다.
void main() {
Map<String, int> map = {};
map.putIfAbsent('a', () => 0);
map.putIfAbsent('a', () => 2);
print(map);
}
Output:
{a: 0}
3. update()로 value 변경
Map.update(key, function)
은 Map에 key가 존재할 때, function의 리턴 값으로 업데이트 됩니다. function의 인자로 Map에 저장된 value가 전달됩니다.
아래 예제는 key a
의 value를 2로 업데이트하고, 그 다음은 기존 value에 10을 더하여 value를 업데이트합니다.
void main() {
Map<String, int> map = {};
map.putIfAbsent('a', () => 1);
print(map);
map.update('a', (value) => 2);
print(map);
map.update('a', (value) => value + 10);
print(map);
}
Output:
{a: 2}
{a: 12}
3.1 Invalid argument 예외
update()
로 어떤 key의 value를 변경할 때, Map에 key가 존재하지 않으면 Exception이 발생합니다.
void main() {
Map<String, int> map = {};
map.update('a', (value) => value + 10);
print(map);
}
Output:
Unhandled exception:
Invalid argument (key): Key not in map.: "a"
#0 MapMixin.update (dart:collection/maps.dart:154:5)
#1 main
bin/dart_application_1.dart:5
3.2 key가 존재하지 않을 때 초기 값 설정
key가 존재하지 않을 때, 값을 업데이트하지 않고 초기 값으로 key-value
를 추가하도록 구현할 수 있습니다.
아래 예제와 같이 ifAbsent
인자로 초기 값을 리턴하는 함수를 전달하면 됩니다.
void main() {
Map<String, int> map = {};
map.update('a', (value) => value + 10, ifAbsent: () => 0);
print(map);
map.update('a', (value) => value + 10, ifAbsent: () => 0);
print(map);
}
Output:
{a: 0}
{a: 10}
4. addAll()으로 다른 Map의 아이템 추가
Map.addAll(otherMap)
은 다른 Map의 key-value
값을 모두 Map에 추가합니다.
void main() {
Map<String, int> map = {};
Map<String, int> otherMap = {'a': 0, 'b': 1, 'c': 2};
map.addAll(otherMap);
print(map);
}
Output:
{a: 0, b: 1, c: 2}
Related Posts
- Flutter/Dart - Future.delayed() 사용 방법
- Flutter/Dart - Stream 사용 방법
- Flutter/Dart - 파일, 디렉토리 삭제
- Flutter/Dart - 텍스트 파일 쓰기
- Flutter/Dart - 반복문 (for, while, for-in, forEach)
- Flutter/Dart - Static 변수, 메소드 선언
- Flutter/Dart - 텍스트 파일 읽기
- Flutter/Dart - 다양한 Null 체크 방법
- Flutter/Dart - Double을 Int로 변환
- Flutter/Dart - Double을 String으로 변환
- Flutter/Dart - String을 Double로 변환
- Flutter/Dart - String을 List로 변환
- Flutter/Dart - String에서 특정 문자열 Index 찾기
- Flutter/Dart - String 길이(length)
- Flutter/Dart - 몇 초 지연시키기, sleep
- Flutter/Dart - 날짜 계산, 년/월/일 더하고 빼기
- Flutter/Dart - 날짜 문자열을 DateTime으로 변환
- Flutter/Dart - 현재 시간 가져오기, DateTime
- Flutter/Dart - Map에 key-value 추가
- Flutter/Dart - Map 순회 방법
- Flutter/Dart - Map 선언 및 초기화
- Flutter/Dart - Map에서 Entry(key-value) 제거
- Flutter/Dart - key, value로 Map 정렬
- Flutter/Dart - 리스트 복사 방법
- Flutter/Dart - 리스트 합치는 방법
- Flutter/Dart - 리스트 최대값, 최소값 찾기
- Flutter/Dart - 리스트 요소 추가, 특정 위치 추가
- Flutter/Dart - 리스트 요소 제거
- Flutter/Dart - 리스트 합계, 평균 계산
- Flutter/Dart - 리스트 요소 값 변경, 찾기
- Flutter/Dart - 리스트 중복 제거
- Flutter/Dart - 리스트 정렬 (오름차순, 내림차순)
- Flutter/Dart - 리스트 자르기, 분리하기
- Flutter/Dart - 변수 타입 체크
- Flutter/Dart - 리스트 필터링