Flutter

컬렉션(자료구조)

ryeonng 2024. 9. 6. 10:40
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