dart 에서 제공 하는 자료구조와 특징에 대해 알아 보자.
컬렉션은 여러 값을 하나의 변수에 저장할 수 있는 타입을 의미한다.
주요 컬렉션 타입
List(리스트) :
- 여러 값을 순서대로 저장하고, 인덱스 번호로 접근 가능한 컬렉션 타입
Map(맵) :
- '키'와 '값'의 형태로 저장하고, '키'를 기반으로 매칭되는 '값'을 바로 접근 가능한 컬렉션 타입
Set(셋) :
- 중복된 데이터를 제거하고 데이터를 저장하는 컬렉션 타입
// 코드의 시작점
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('사과1111');
//myList.removeAt(100); 오류 발생
print(myList.length); // 인덱스 길이 = n - 1 = 0 , 1
}
void main(){
// Map 자료구조는 키 값을 사용한다.
Map<String, int> myDict = {'고양이' : 1, '포도' : 2, '사과' : 3};
print(myDict.runtimeType); // <String, int>
// Map에 새로운 키/값 추가하기
myDict['케이트'] = 4;
print(myDict['케이트']); // 4
// 읽기
print(myDict['고양이']);
print(myDict.keys); // (고양이, 포도, 사과, 케이트)
print(myDict.values); // (1, 2, 3, 4)
print(myDict.entries); // (MapEntry(고양이: 1), MapEntry(포도: 2), MapEntry(사과: 3), MapEntry(케이트: 4))
// 수정
myDict['고양이'] = 100;
// 삭제
myDict.remove('고양이');
print(myDict.keys); // (포도, 사과, 케이트) - 고양이 삭제 됨
print(myDict); // {포도: 2, 사과: 3, 케이트: 4}
// Map에 특정 키/값이 있는지 확인하는 방법
print(myDict.containsKey('포도')); // 존재 : true
print(myDict.containsKey('고양이')); // 없음 : false
print(myDict.containsValue(2)); // true
// Map을 다룰 때 다른 데이터 타입으로 변환해야 하는 경우 -> list
var myDictKeys = myDict.keys;
var myDictValues = myDict.values;
print(' 데이터 타입 확인1 : ${myDictKeys.runtimeType}'); // _CompactIterable<String>
List<String> myDictKeyList = myDict.keys.toList();
print(' 데이터 타입 확인2 : ${myDictKeyList.runtimeType}'); // List<String>
// 기존에 존재하는 Map에 다른 Map의 데이터를 추가 해야 한다면
Map<String, int> myDict2 = {'한국' : 1, '일본' : 2};
myDict.addAll(myDict2);
print('----------------------------');
print(myDict); // {포도: 2, 사과: 3, 케이트: 4, 한국: 1, 일본: 2} 기존Map에 데이터 추가
}
Set자료구조
void main() {
// List를 초기화 -> []
// Map : {}
Set<String> data = {'a', 'b', 'c', 'a'};
print(data); // {a, b, c} : Set자료구조는 중복 x
data.add('d');
data.remove('a');
print(data); // {b, c, d}
// Set은 수정 개념 x 데이터 날리고 새로 추가
// 전체 비우기
data.clear();
print(data); // {}
}
'Flutter' 카테고리의 다른 글
플러터 기본기 다지기 (2) | 2024.11.05 |
---|---|
dart(함수, 메서드) (0) | 2024.09.06 |
dart Null Safety (1) | 2024.09.06 |
프로젝트 구조 (0) | 2024.09.06 |
변수 (1) | 2024.09.06 |