[Dart] Iterable collections

jaehee kim·2021년 5월 23일
4

Dart

목록 보기
3/7
post-thumbnail
post-custom-banner

Iterable collections

What are collections?

collectionelements 라고 불리는 object들의 그룹을 나타내는 object 입니다. Iterablescollection 의 한 종류 입니다.

  • collection 은 empty가 될 수 있고, 많은 element를 가질수 도 있습니다.
  • List : element의 index를 이용하여 읽습니다.
  • Set : 같은 element가 존재할 수 없습니다.
  • Map : key를 이용하여 element를 읽습니다.

What is an Iterable?

Iterable 은 연속적으로 접근할 수 있는 element들의 collection입니다. IterableList 와 다르게 [] 연산자를 가지고 있지 않아서 element를 읽을 때, elementAt() 을 이용합니다.

Iterable<int> iterable = [1, 2, 3];
int value = iterable.elementAt(1);

Reading elements

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);

Checking conditions

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');
  }
}

Filtering

특정 조건을 만족하는 모든 element들을 찾을 때, where() 을 이용할 수 있습니다. where() 의 output은 또다른 Iterable 입니다.

var evenNumbers = numbers.where((number) => number.isEven);
for (var number in evenNumbers) {
  print('$number is even');
}

Mapping

map() 을 이용하여 각 element에 함수를 적용하여 새로운 element로 대체할 수 있습니다.

Iterable<int> output = numbers.map((number) => number * 10);






Reference

[Iterable collections]

post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 7월 21일

잘봤습니다

답글 달기