Flutter 컬렉션

Suyeon Lee·2024년 1월 10일
0
post-thumbnail

❓ 컬렉션

📌 여러 값을 하나의 변수에 저장할 수 있는 타입
List: 여러 값을 순서대로 저장
Map: 특정 키값을 기반으로 빠르게 검색
Set: 중복 데이터를 제거

List 타입

void main() {
	List<String> blackPinkList = ['리사', '지수', '제니', '로제'];
	
	blackPinkList[3] = '코드팩토리'; // 3번 인덱스값 변경
}
  • add() 함수
void main() {
	List<String> blackPinkList = ['리사', '지수', '제니', '로제'];
	
	blackPinkList.add('코드팩토리'); // 값 추가
}
  • where() 함수 순회가 끝날 시 필터링된 값들 기반으로 이터러블 반환
void main() {
	List<String> blackPinkList = ['리사', '지수', '제니', '로제'];

	final newList = blackPinkList.where(
	(name) => name == '리사' || name == '지수', // '리사' 또는 '지수'만 유지
);	

print(newList);
print(newList.toList()); // Iterable을 Lsit로 다시 변환할 때 toList() 사용

}
❓ Iterable: 추상 클래스로 List, Set 등의 컬렉션 타입들이 상속 받는 클래스

List와 Set 같은 컬렉션이 공통으로 사용하는 기능을 정의해둔 클래스

  • map() 함수

순회가 끝날 시 반환된 값들 기반으로 이터러블 반환

void main() {
	List<String> blackPinkList = ['리사', '지수', '제니', '로제'];

	final newList = blackPinkList.where(
		(name) => '블랙핑크 $name',
);	
print(newList);
// Iterable을 Lsit로 다시 변환할 때 toList() 사용
print(newList.toList()); 

}
  • reduce() 함수
    • 매개변수에 입력된 함수 실행
    • 순회할 때마다 값을 쌓아가는 특징
void main() {
	List<String> blackPinkList = ['리사', '지수', '제니', '로제'];

	final allMembers = blackPinkList.reduce((value, element) => value + ', '
	+ element);

);	
print(allMembers);
}
  • fold() 함수
    • reduce()와 실행되는 논리는 똑같다
    • reduce() 함수는 함수가 실행되는 리스트 요소들의 타입이 같아야 하지만 fold() 함수는 어떤 타입이든 반환 가능
void main() {
	List<String> blackPinkList = ['리사', '지수', '제니', '로제'];

	final allMembers = blackPinkList.fold<int>(0, (value, element) => 
	value + element.length);
	
print(allMembers);
}

Map 타입

Map<키의 타입, 값의 타입> 맵이름 형식으로 생성

void main() {
	Map<String, String> dictionary = {
	'Harry Potter': '해리 포터',
	'Ron Weasley': '론 위즐리',
	'Hermione Granger': '헤르미온느 그레인저',
	};
print(dictionary['Harry Potter']);
print(dictionary['Ron Weasley']);
}
  • 키와 값 반환하기
void main() {
	Map<String, String> dictionary = {
	'Harry Potter': '해리 포터',
	'Ron Weasley': '론 위즐리',
	'Hermione Granger': '헤르미온느 그레인저',
	};
print(dictionary.keys); // Harry Potter, Ron Weasley, Hermione Granger
print(dictionary.values); // 해리 포터, 론 위즐리, 헤르미온느 그레인저
}

Set 타입

Set<타입> 세트이름 형식으로 생성

void main() {
	Set<String> blackPink = {'로제', '지수', '리사', '제니', '제니'};
	
	print(blackPink);
	print(blackPink.contains('로제')); // 값이 있는지확인
	print(blackPink.toList()); // 리스트로 변환

	List<String> blackPink2 = ['로제', '지수', '지수'];
	print(Set.from(blackPink2)); // List 타입을 Set 타입으로 변경
}

enum

  • enum은 한 변수의 값을 몇 가지 옵션으로 제한하는 기능
  • 선택지가 제한적일 때 사용
enum Status {
	approved,
	pending,
	rejected,
}

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

String으로 대체 가능하나 enum은 기본적으로 자동 완성이 지원되고 정확히 어떤 선택지가 존재하는지 정의해둘 수 있기 때문에 유용

profile
매일 렌더링하는 FE 개발자

0개의 댓글