# Grouping method examples for Scala Vector and Seq

This page shows a few examples of “grouping” methods that can be used on the Scala Vector. Note that these same methods will also work with a Scala `Seq`, including `IndexedSeq`.

## Grouping methods

Method Returns
`groupBy(f)` A map of collections created by the function `f`
`grouped` Breaks the vector into fixed-size iterable collections
`partition(p)` Two collections created by the predicate `p`
`sliding(i,s)` Group elements into fixed size blocks by passing a sliding window of size `i` and step `s` over them
`span(p)` A collection of two collections; the first created by `vector.takeWhile(p)`, and the second created by `vector.dropWhile(p)`
`splitAt(i)` A collection of two collections by splitting the vector at index `i`
`unzip` The opposite of `zip`, breaks a collection into two collections by dividing each element into two pieces; such as breaking up a vector of `Tuple2` elements

### Examples

``````val firstTen = (1 to 10).toVector      # Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

firstTen.groupBy(_ > 5)                # Map(false -> Vector(1, 2, 3, 4, 5), true -> Vector(6, 7, 8, 9, 10))
firstTen.grouped(2)                    # Iterator[Vector[Int]] = non-empty iterator
firstTen.grouped(2).toVector           # Vector(Vector(1, 2), Vector(3, 4), Vector(5, 6), Vector(7, 8), Vector(9, 10))
firstTen.grouped(5).toVector           # Vector(Vector(1, 2, 3, 4, 5), Vector(6, 7, 8, 9, 10))

"foo bar baz".partition(_ < 'c')       # (" ba ba", foorz)  // a Tuple2
firstTen.partition(_ > 5)              # (Vector(6, 7, 8, 9, 10), Vector(1, 2, 3, 4, 5))

firstTen.sliding(2)                    # Iterator[Vector[Int]] = non-empty iterator
firstTen.sliding(2).toVector           # Vector(Vector(1, 2), Vector(2, 3), Vector(3, 4), Vector(4, 5), Vector(5, 6), Vector(6, 7), Vector(7, 8), Vector(8, 9), Vector(9, 10))
firstTen.sliding(2,2).toVector         # Vector(Vector(1, 2), Vector(3, 4), Vector(5, 6), Vector(7, 8), Vector(9, 10))
firstTen.sliding(2,3).toVector         # Vector(Vector(1, 2), Vector(4, 5), Vector(7, 8), Vector(10))
firstTen.sliding(2,4).toVector         # Vector(Vector(1, 2), Vector(5, 6), Vector(9, 10))

val x = Vector(15, 10, 5, 8, 20, 12)
x.groupBy(_ > 10)                      # Map(false -> Vector(10, 5, 8), true -> Vector(15, 20, 12))
x.partition(_ > 10)                    # (Vector(15, 20, 12), Vector(10, 5, 8))
x.span(_ < 20)                         # (Vector(15, 10, 5, 8), Vector(20, 12))
x.splitAt(2)                           # (Vector(15, 10), Vector(5, 8, 20, 12))``````

I created this tutorial to show examples of grouping methods on Scala `Vector` or `Seq`, but for many more examples of how to work with `Vector`, see my Scala Vector class syntax and method examples tutorial.