
컬랙션은 서로의 타입으로 자유롭게 형변환이 가능하다
리스트의 끝에 데이터를 추가한다순회하면서 특정 조건에 맞는 값만 필터링한다이터러블(iterable)타입이 반환된다순회하면서 요소 값의 변경이 가능하다 변경된 값으로 구성된 iterable이 반환된다
순회하면서 값을 누적하여 누적한 값을 List 멤버의 타입과 동일한 타입으로 반환한다
리스트를 구성하는 값들의 타입과반환되는 리스트를 구성할 값들의 타입이 완전히 같아야 한다

fold는 어떠한 타입이든 반환할 수 있다.
시작할 값을 지정하고, 두 번째 매개변수에 함수를 지정한다데이터의 중복이 불가능. 유일한 값만 저장contain()을 이용한다toList()을 사용한다from()을 사용한다열거형 이름.values는 열거형에 정의된 모든 값들을 리스트로 반환해준다 void main(){
// Collection(컬랙션)
// 컬렉션은 서로의 타입으로 자유롭게 형변환이 가능하다
// List
// List.add(value)
List<String> foodName = ['피자', '당근', '토끼', '네이버', '쿠팡'];
foodName.add('토스');
print(foodName); // [피자, 당근, 토끼, 네이버, 쿠팡, 토스]
// List.where((element) => 조건식 )
List<String> foodList = ['피자', '당근', '토끼'];
// final : Runtime시에 값이 결정됨
final newList1 = foodList.where((name) => name == "피자" || name == "콜라");
// iterable로 반환
print(newList1); // 출력결과 : (피자)
// toList : iterable을 List로 반환
print(newList1.toList()); // 출력결과 : [피자]
// List.map( (element) => 변형식 )
List<String> furnitureList = ['소파', '텔레비전', '침대'];
final furniture = furnitureList.map((element) => "우리집에는 ${element}가 있어요~!");
print(furnitureList); // 출력 결과 : [소파, 텔레비전, 침대] => 원래의 리스트에는 영향을 미치지 않음
print(furniture); // 출력 결과 : (우리집에는 소파가 있어요~!, 우리집에는 텔레비전가 있어요~!, 우리집에는 침대가 있어요~!) => iterable 반환
print(furniture.toList()); // 출력 결과 : [우리집에는 소파가 있어요~!, 우리집에는 텔레비전가 있어요~!, 우리집에는 침대가 있어요~!] => List로 변환
// List.reduce( (value, element) => 수행식 )
List<String> foodList2 = ['pizza', 'hamburger', 'chicked', 'coke'];
final allList1 = foodList2.reduce((value, element) => "$value, $element");
print(allList1); // <String> : pizza, hamburger, chicked, coke
// List.fold( startElement, (value, elemenet) => 수행식 )
List<String> foodList3 = ['피자', '햄버거', '치킨', '콜라'];
final allList2 = foodList3.fold(1, (value, element) => value + element.length);
print(allList2);
// Map
Map<String, String> firstName = {
"Kim" : "김씨",
"Park" : "박씨",
"Kwon" : "권씨",
};
print(firstName['김씨']); // null => Key값으로 조회를 해야함
print(firstName['Park']); // 박씨
// 전체 키(key)를 반환
print(firstName.keys); // (Kim, Park, Kwon)
// 전체 값(value)을 반환
print(firstName.values); // (김씨, 박씨, 권씨)
// Set
Set<String> colors = {
'red', 'blue', 'orange', 'black', 'yellow'
};
print(colors); // {red, blue, orange, black, yellow}
print(colors.contains('red')); // <Boolean> true
print(colors.toList()); // [red, blue, orange, black, yellow]
List<String> months = ['Jan', 'Apr', 'Jul', 'Sep', 'Dec'];
// List -> Set으로 반환
print(Set.from(months)); // {Jan, Apr, Jul, Sep, Dec}
// Enum
Answers answer = Answers.Yes;
print(answer); // Answers.Yes
print(answer.name); // No
print(Answers.values); // [Answers.Yes, Answers.No, Answers.None]
}
enum Answers {
Yes,
No,
None
}