Map(HashMap) 선언 및 초기 값으로 초기화하는 방법을 소개합니다.
1. Map(HashMap) 선언
아래 예제와 같이 Map을 선언할 수 있습니다.
- Map을 사용하려면
'dart:collection'
라이브러리가 import로 선언되어야 함 - 생성할 때
new HashMap<>
처럼 new를 붙여도 되고,HashMap<>
처럼 생략해도 됨
import 'dart:collection';
void main() {
HashMap hashMap1 = new HashMap<int, String>();
HashMap hashMap2 = HashMap<int, String>();
}
1.1 다른 종류의 Map
HashMap
외에, 아래와 같이 LinkedHashMap
또는 SplayTreeMap
를 선언할 수도 있습니다.
Map<>
으로 선언하면 기본적으로 LinkedHashMap
으로 생성됩니다. Type을 확인해보면 알 수 있습니다.
import 'dart:collection';
void main() {
Map map1 = LinkedHashMap<int, String>();
Map map2 = SplayTreeMap<int, String>();
Map map3 = Map<int, String>();
print(map1.runtimeType);
print(map2.runtimeType);
print(map3.runtimeType);
}
Output:
_InternalLinkedHashMap<int, String>
SplayTreeMap<int, String>
_InternalLinkedHashMap<int, String>
LinkedHashMap
과HashMap
은 비슷한 자료구조입니다. 차이점은HashMap
은 요소를 순회할 때 출력되는 순서가 저장 순서와 다르지만,LinkedHashMap
은 저장 순서와 출력 순서가 같습니다.
2. Map 선언 및 초기 값 설정
아래와 같이 선언과 동시에 초기 값을 설정할 수 있습니다.
{key:value, ...}
처럼 초기 값으로 초기화 할 수 있으며,LinkedHashMap
으로 생성 됨- 타입은 초기 값에서 추론할 수 있기 때문에, 선언 부분에서
var
을 사용하여 타입을 생략할 수 있음 - 아래 예제의 Type을 확인해보면
<String, int>
타입의 Map으로 생성됨
import 'dart:collection';
void main() {
Map<String, int> map1 = {'a': 0, 'b': 1, 'c': 2};
print(map1.runtimeType);
print(map1);
var map2 = {'a': 0, 'b': 1, 'c': 2};
print(map2.runtimeType);
print(map2);
}
Output:
_InternalLinkedHashMap<String, int>
{a: 0, b: 1, c: 2}
_InternalLinkedHashMap<String, int>
{a: 0, b: 1, c: 2}
만약 LinkedHashMap
가 아닌 HashMap
의 객체를 생성하면서 초기 값을 입력하고 싶다면, HashMap.from()
을 사용하여 아래와 같이 초기 값을 입력하면 됩니다.
import 'dart:collection';
void main() {
HashMap<String, int> map = HashMap.from({'a': 0, 'b': 1, 'c': 2});
print(map.runtimeType);
print(map);
}
Output:
_HashMap<String, int>
{c: 2, a: 0, b: 1}
2.1 Empty Map 생성
아래와 같이 Empty Map을 생성할 수 있습니다.
var map1 = {};
와 같이 데이터 없이 선언하면, type을 추론할 수 없기 때문에 dynamic type으로 생성 됨- var을 사용한다면
var map2 = <String, int> {};
처럼 타입을 명시적으로 입력할 수 있음
import 'dart:collection';
void main() {
var map1 = {};
print(map1.runtimeType);
print(map1);
var map2 = <String, int> {};
print(map2.runtimeType);
print(map2);
Map<String, int> map3 = {};
print(map3.runtimeType);
print(map3);
}
Output:
_InternalLinkedHashMap<dynamic, dynamic>
{}
_InternalLinkedHashMap<String, int>
{}
_InternalLinkedHashMap<String, int>
{}
3. 다른 Map 요소들로 초기화
아래와 같이 다른 Map 객체로 새로운 Map을 초기화할 수 있습니다.
Map.from()
은 인자로 전달된 Map의 요소로 새로운 Map 생성 및 초기화함Map.from()
으로 생성되는 Map은LinkedHashMap
import 'dart:collection';
void main() {
Map<String, int> map1 = {'a': 0, 'b': 1, 'c': 2};
Map<String, int> map2 = Map.from(map1);
print(map2.runtimeType);
print(map2);
}
Output:
_InternalLinkedHashMap<String, int>
{a: 0, b: 1, c: 2}
3.1 다른 종류의 Map 생성
만약 LinkedHashMap
가 아닌 HashMap
의 객체를 생성한다면 HashMap.from()
을 사용하여 생성하면 됩니다.
import 'dart:collection';
void main() {
HashMap<String, int> map = HashMap.from({'a': 0, 'b': 1, 'c': 2});
print(map.runtimeType);
print(map);
}
Output:
_HashMap<String, int>
{c: 2, a: 0, b: 1}
Loading script...
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 - 리스트 필터링