collection 은 elements 라고 불리는 object들의 그룹을 나타내는 object 입니다. Iterables 는 collection 의 한 종류 입니다.
- collection 은 empty가 될 수 있고, 많은 element를 가질수 도 있습니다.
- List : element의 index를 이용하여 읽습니다.
- Set : 같은 element가 존재할 수 없습니다.
- Map : key를 이용하여 element를 읽습니다.
Iterable 은 연속적으로 접근할 수 있는 element들의 collection입니다. Iterable 은 List 와 다르게 [] 연산자를 가지고 있지 않아서 element를 읽을 때, elementAt() 을 이용합니다.
Iterable<int> iterable = [1, 2, 3];
int value = iterable.elementAt(1);
for-in loop를 이용해서 iterable의 element를 읽을 수 있습니다.
void main() {
var iterable = ['Salad', 'Popcorn', 'Toast'];
for (var element in iterable) {
print(element);
}
}
Iterable class의 first, last property를 이용하여, 첫번째와 마지막 값에 접근할 수 있습니다.
void main() {
Iterable iterable = ['Salad', 'Popcorn', 'Toast'];
print('The first element is ${iterable.first}');
print('The last element is ${iterable.last}');
}
}
firstWhere() 를 이용하여 특정 조건을 만족하는 첫번째 element 를 가져올 수 있습니다.
String element = iterable.firstWhere((element) => element.length > 5);
collection의 모든 element들이 특정조건에 만족하는지 확인할 때, for-in loop 대신 every() 나 any() 를 사용할 수 있습니다.
- any() : 만약 적어도 하나라도 조건에 만족하는 element가 있으면 true를 return
- every() : 만약 모든 element가 조건에 만족하면 true를 return
void main() {
var items = ['Salad', 'Popcorn', 'Toast'];
if (items.any((element) => element.contains('a'))) {
print('At least one element contains "a"');
}
if (items.every((element) => element.length >= 5)) {
print('All elements have length >= 5');
}
}
특정 조건을 만족하는 모든 element들을 찾을 때, where() 을 이용할 수 있습니다. where() 의 output은 또다른 Iterable 입니다.
var evenNumbers = numbers.where((number) => number.isEven);
for (var number in evenNumbers) {
print('$number is even');
}
map() 을 이용하여 각 element에 함수를 적용하여 새로운 element로 대체할 수 있습니다.
Iterable<int> output = numbers.map((number) => number * 10);
잘봤습니다