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 |