[Dart] 자료형과 자료구조 알아보기

천우산__ ㅣ 2024. 8. 27. 14:07

Dart 언어 또한 다른 프로그래밍 언어와 마찬가지로 다양한 종류의 자료형(Type)과 자료 구조를 가지고 있다.

이번 글에서는 Dart 가 지원하는 자료형과 자료 구조에 대해서 정리해 보도록 하자.

 

1. 자료형 정리

void main() {
	String myName = 'chunws';
    
    int year = 10;
    double power = 11.11;
    
    num items = 1234; 
    items = 1234.1;
    
    bool canFly = false;
}

가장 흔하게 사용되는 자료형은 문자열, 숫자, 부울일 것이며

문자열은 String, 부울은 bool로 선언하여 사용할 수 있다.

숫자형의 경우, 소수점을 사용지 않는 경우 int 자료형을 사용하고, 소수점이 존재하는 경우 double를 사용한다.

단, 상황에 따라 소수점이 있을 수도 없을 수도 있는 경우에는 num 으로 정의하여 사용할 수 있다.

 

2. 자료 구조 - List

리스트는 가장 기본적인 자료구조 중 하나로 볼 수 있다.

리스트는 JavaScript의 배열(array)과 유사하며, 순서가 있는 요소들의 모음이다.

리스트는 0부터 시작하는 인덱스를 가지며, 동일한 타입의 요소를 중복해서 저장할 수 있다.

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];
  print(numbers); // [1, 2, 3, 4, 5]
}

 

List 조작 method 예시

add: 리스트에 요소를 추가
remove: 특정 요소를 삭제
length: 리스트의 길이를 반환
contains: 특정 요소가 리스트에 있는지 확인

void main() {
  List<String> fruits = ['Apple', 'Banana', 'Orange'];
  
  fruits.add('Grapes');
  print(fruits); // ['Apple', 'Banana', 'Orange', 'Grapes']
  
  fruits.remove('Banana');
  print(fruits); // ['Apple', 'Orange', 'Grapes']
  
  print(fruits.length); // 3
  
  print(fruits.contains('Apple')); // true
}

 

 

3. 자료 구조 - Set

셋은 중복되지 않는 요소들의 모음.

리스트와 달리 셋은 요소들의 순서가 중요하지 않으며, 동일한 요소를 여러 번 포함할 수 없다.

void main() {
  Set<String> vegetables = {'Carrot', 'Broccoli', 'Spinach'};
  print(vegetables); // {Carrot, Broccoli, Spinach}
}

set 조작 method 예시

add: 요소를 추가.
remove: 특정 요소를 삭제
contains: 특정 요소가 셋에 있는지 확인
intersection: 두 셋의 교집합을 반환

void main() {
  Set<String> vegetables = {'Carrot', 'Broccoli', 'Spinach'};
  
  vegetables.add('Pepper');
  print(vegetables); // {Carrot, Broccoli, Spinach, Pepper}
  
  vegetables.remove('Carrot');
  print(vegetables); // {Broccoli, Spinach, Pepper}
  
  print(vegetables.contains('Spinach')); // true
  
  Set<String> moreVegetables = {'Broccoli', 'Pepper', 'Tomato'};
  print(vegetables.intersection(moreVegetables)); // {Broccoli, Pepper}
}

 

 

4. 자료 구조 - Queue

큐는 FIFO(First In, First Out) 방식으로 작동하는 자료구조이다.

Dart에서는 Queue 클래스가 큐를 지원하며, 일반적으로 리스트보다 큐에 대한 요소의 추가 및 제거가 더 효율적으로 작동한다.

이 자료 구조는 사용하기 전, dart:collection을 import 해야 한다.

import 'dart:collection';

void main() {
  Queue<int> queue = Queue();
  queue.addAll([10, 20, 30]);
  print(queue); // {10, 20, 30}
}


Queue 조적을 위한 method 예시

add: 큐의 끝에 요소를 추가
removeFirst: 큐의 첫 번째 요소를 제거
removeLast: 큐의 마지막 요소를 제거
first: 큐의 첫 번째 요소를 반환

void main() {
  Queue<int> queue = Queue();
  queue.addAll([10, 20, 30]);
  
  queue.add(40);
  print(queue); // {10, 20, 30, 40}
  
  queue.removeFirst();
  print(queue); // {20, 30, 40}
  
  print(queue.first); // 20
}

 

 

 

5. 자료 구조 - Map

맵은 키-값 쌍으로 데이터를 저장하는 자료구조로

JavaScript의 object, Python의 dictionary 와 비슷하며, 각 키는 유일해야 하고, 키를 통해 값에 접근 가능한 자료 구조이다.

void main() {
  Map<String, int> fruitPrices = {
    'Apple': 3,
    'Banana': 2,
    'Orange': 4
  };
  print(fruitPrices); // {Apple: 3, Banana: 2, Orange: 4}
}

위 코드는 Map 자료 구조 선언 당시 String, int로 입력을 제한하여

문자형 - 숫자형 의 쌍을 가진 구조로만 이뤄져 있고, 입력도 해당 쌍으로만 가능하다.

만일, 키 혹은 값이 일정 타입을 따르지 않는 경우, 해당 위치에 Object를 넣어주면

키 - 값 입력 제한 없이 이용 가능하다.

Map 자료 구조 조작을 위한 method 예시

putIfAbsent: 키가 없을 경우에만 값을 추가
remove: 특정 키와 그에 해당하는 값을 삭제
containsKey: 맵에 특정 키가 있는지 확인
update: 특정 키의 값을 업데이트

 

 

'App > Dart' 카테고리의 다른 글

[Dart] 함수 활용 방법  (0) 2024.08.28
[Dart] 변수 타입 알아보기  (0) 2024.08.26