front end/flutter, dart

Dart 입문. Collection(List, Map, Set)

노루아부지 2023. 5. 15. 06:39

Collection은 여러 값을 하나의 변수에 저장할 수 있는 타입니다. Collection은 서로의 타입으로 자유롭게 형변환이 가능하다는 큰 장점이 있습니다.

 

1. List

  • 리스트(List)는 여러 값을 순서대로 한 변수에 저장할 때 사용됩니다.
  • 리스트의 구성단위를 원소라고 합니다.
  • 리스트명[index] 형식으로 특정 원소에 접근할 수 있습니다.
  • 첫 번째 원소는 index 0이며, 마지막 원소는 리스트의 길이 -1입니다.
void main() {
  List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
  
  print(list); // 리스트 전체 출력
  print(list[0]);
  print(list[3]); // 마지막 원소 지정
  
  print(list.length); // 리스트의 길이
  print(list[list.length - 1]); // 마지막 원소 지정
}

실행 결과

 

 

다음은 List에서 가장 많이 사용하는 add(), where(), map(), reduce(), fold() 함수를 알아보겠습니다.

 

add() 함수

add() 함수는 List에 값을 추가할 때 사용합니다.

void main() {
  List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
  list.add("유관순");
  
  print(list); // 리스트 전체 출력
}

실행 결과

 

 

where() 함수

where() 함수는 List에 있는 값들 중, 트정 조건에 맞는 값만 필터링하는 데 사용합니다. 매개변수에 함수를 입력해야 하며, 입력된 함수는 기존 값을 하나씩 매개변수로 입력받습니다. 필터링이 끝나면 Iterable이 반환됩니다.

void main() {
  List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
  
  final newList = list.where(
    (name) => name == '강감찬' || name == '이순신'
  );
  
  print(newList);  // Iterable
  print(newList.toList()); // Iterable을 List로 변환하여 출력
}

실행 결과

 

 

map() 함수

map() 함수는 List에 있는 값들을 순서대로 순회하면서 값을 변경할 수 있습니다. List와 마찬가지로 매개변수에 함수를 입력해야 하며, 입력된 함수는 기존 값을 하나씩 매개변수로 받습니다. 순회가 끝나면 Iterable이 반환됩니다.

void main() {
  List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
  
  final newList = list.map(
    (name) => '한국 $name' // 리스트의 모든 값 앞에 '한국' 추가
  );
  
  
  print(newList);  // Iterable
  print(newList.toList()); // Iterable을 List로 변환하여 출력
}

 

 

reduce() 함수

reduce() 함수는 List에 있는 값들을 순회하면서 매개변수에 입력된 함수를 실행합니다.

reduce() 함수는 순회할 때마다 값을 쌓아가는 특징이 있습니다.

reduce() 함수는 순회가 끝나면 List 멤버의 타입과 같은 타입을 반환합니다.

void main() {
  List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
  
  final newList = list.reduce(
    (value, element) => value + ', ' + element
  );
  
  print(newList);
}

 

 

fold() 함수

fold() 함수는 reduce() 함수와 실행되는 논리는 같습니다.

단, recude() 함수는 함수가 실행되는 List 요소들의 타입이 같아야 하지만, fold() 함수는 어떠한 타입이든 반환할 수 있습니다.

void main() {
  List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
  
  // list에 존재하는 총 글자수를 구한다.
  final newList = list.fold<int>(
    0, (value, element) => value + element.length
  );
  
  print(newList);
}

실행 결과

 

 

2. Map

Map 타입은 키(key)와 값(value)의 짝을 저장합니다. 리스트는 순서대로 값을 저장하는데 중점을 두지만, Map은 키를 이용여 원하는 값을 빠르게 찾는 데 중점을 둡니다.

void main() {
  Map<String, int> map = {
    '홍길동': 20,
    '임꺽정': 30,
    '강감찬': 40,
    '이순신': 50
    };
  
  print(map['홍길동']);
  print(map['이순신']);
}

실행 결과

 

all keys, all values

모든 Map 타입은 모든 키와 모든 값을 반환받을 수 있습니다.

void main() {
  Map<String, int> map = {
    '홍길동': 20,
    '임꺽정': 30,
    '강감찬': 40,
    '이순신': 50
    };
  
  print(map.keys);
  print(map.values);
}

실행 결과

 

 

3. Set

Set은 중복 없는 값들의 집합입니다.

따라서 각 값의 유일함을 보장받을 수 있습니다.

 

void main() {
  // 이순신 중복
  Set<String> set = {'홍길동','임꺽정','강감찬','이순신','이순신'};
  
  // 중복된 값 있는지 확인
  print(set);
  // 값이 있는지 확인
  print(set.contains('임꺽정'));
}

실행 결과

 

 

Set to List, List to Set

void main() {
  // 이순신 중복
  Set<String> set = {'홍길동','임꺽정','강감찬','이순신','이순신'};
  
  List<String> list = set.toList();
  
  // Set to List
  print(list);
  // List to Set
  print(Set.from(list));
}

실행 결과

 

 

4. enum

열거형 상수인 enum(enumeration)은 관련이 있는 상수들의 집합입니다.

한 변수의 값을 몇 가지 옵션으로 제한하기 위해 사용합니다.

 

enum Status {
  requested, approved, rejected
}

void main() {
  Status status = Status.requested;
  print(status);
}

실행결과

 

 

 

728x90

'front end > flutter, dart' 카테고리의 다른 글

[Dart 입문] 함수 사용방법  (0) 2023.05.18
[Dart 입문] null 관련 연산자  (0) 2023.05.16
Dart 입문. 기초 문법  (0) 2023.05.11
Dart 입문. Dart 소개  (0) 2023.05.10
Flutter 설치 및 개발환경 구축 (Windows, Mac)  (0) 2023.05.08
loading