void main() {
List a = [1,2,3,4];
List b = [5,6,7,8];
print(a);
print(b);
}
---
[1, 2, 3, 4]
[5, 6, 7, 8]
리스트가 2개가 있다.
합치는 방법은 매우 간단하다. + 연산자를 사용한다.
// 합치기
print(a + b);
---
[1, 2, 3, 4, 5, 6, 7, 8]
다른 방법으로는 addAll 이 있다.
이렇게 하면 a의 값 자체가 바뀐다.
// 합치기 2
print(a..addAll(b));
print(a)
a = [1,2,3,4];
print(List.from(a)..addAll(b));
print(a);
---
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8] ( a 자체가 바뀜 )
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4] ( a 는 그대로 )
followedBy 라는 메소드도 있다. 이걸 쓰면 a 자체는 바꾸지 않는다.
print(a.followedBy(b).toList());
---
[1, 2, 3, 4, 5, 6, 7, 8]
... (spread 연산자) 를 쓰는 방법도 깔끔해보인다.
// print([a,b]);
print([...a, ...b]);
---
[1, 2, 3, 4, 5, 6, 7, 8]
List<List<int>> c = [[1,2,3],[4,5,6],[7,8,9]];
이런 List<List> 를 List 로 합치려면 어떻게 해야 할까?
방금 했던 방식을 생각해보면 이렇게 할 수 있을 것이다.
List naiveC = [];
c.forEach((e) {
naiveC += e;
});
print(naiveC);
이 3개의 메소드를 사용하면 더 깔끔하게 처리할 수 있습니다.
// expand
List expandC = c.expand((e) => e).toList();
print(expandC);
// foldC
List foldC = c.fold([], (a, b) => a + b);
print(foldC);
// reduceC
List reduceC = c.reduce((a, b) => a + b);
print(reduceC);
주로 reduce를 쓴다.