[scala] grouped와 sliding

scala 2016. 9. 9. 11:39





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)






Posted by '김용환'
,