grouped 메소드는 콜렉션 엘리먼트를 일정의 크기로 나누고,
sliding 메소드는 고정 블럭 블록(fixed size block) 나눠, sliding window가 된다.
둘다 리턴 클래스는 scala.collection.Iterator이다.
아래 예시에서 grouped는 예상하는 것처럼 3개식 나누면, List(1,2,3), List(4,5) 이렇게 나눠진다.
그러나 sliding은 List(1,2,3)과 List(2,3,4)로 나눈다.
val list = List(1,2,3,4,5)
val g = list.grouped(3)
println(g.next())
println(g.next())
val s = list.sliding(3)
println(s.next)
println(s.next)
결과는 다음과 같다.
List(1, 2, 3)
List(4, 5)
List(1, 2, 3)
List(2, 3, 4)
다른 예시를 봐야 더 이해가 된다.
grouped는 3 개씩 칼처럼 나누지만, sliding은 순서대로 3개씩 묶어준다.
val list = List(1,2,3,4,5,6,7)
val g = list.grouped(3)
println(g.next())
println(g.next())
println(g.next())
println
val s = list.sliding(3)
println(s.next)
println(s.next)
println(s.next)
println(s.next)
println(s.next)
결과는 다음과 같다.
List(1, 2, 3)
List(4, 5, 6)
List(7)
List(1, 2, 3)
List(2, 3, 4)
List(3, 4, 5)
List(4, 5, 6)
List(5, 6, 7)
'scala' 카테고리의 다른 글
[scala] Map의 transform, map, mapValues 예시, mapValues와 transform의 차이점 (0) | 2016.09.09 |
---|---|
[scala] groupBy, distinct, sortWith, sortBy 예시 (0) | 2016.09.09 |
[scala] main 메소드 argument 처리 (0) | 2016.09.08 |
[scala] import 문 팁 - import static/import rename (0) | 2016.09.08 |
[scala] sealed trait 예시 및 주의점 (0) | 2016.09.08 |