By Alvin Alexander. Last updated: January 14, 2020
This page contains a collection of examples of how to use Scala Vector class informational and mathematical methods. Note that these same methods will also work with a Scala Seq, including IndexedSeq.
Informational and mathematical methods
As the name implies, these methods let you get information about the contents of a Vector, or perform mathematical expressions on a Vector.
| Method | Returns |
|---|---|
contains(e) |
True if the vector contains the element e |
containsSlice(s) |
True if the vector contains the sequence s |
count(p) |
The number of elements in the vector for which the predicate is true |
endsWith(s) |
True if the vector ends with the sequence s |
exists(p) |
True if the predicate returns true for at least one element in the vector |
find(p) |
The first element that matches the predicate p, returned as an Option |
forall(p) |
True if the predicate p is true for all elements in the vector |
hasDefiniteSize |
True if the vector has a finite size |
indexOf(e) |
The index of the first occurrence of the element e in the vector |
indexOf(e,i) |
The index of the first occurrence of the element e in the vector, searching only from the value of the start index i |
indexOfSlice(s) |
The index of the first occurrence of the sequence s in the vector |
indexOfSlice(s,i) |
The index of the first occurrence of the sequence s in the vector, searching only from the value of the start index i |
indexWhere(p) |
The index of the first element where the predicate p returns true |
indexWhere(p,i) |
The index of the first element where the predicate p returns true, searching only from the value of the start index i |
isDefinedAt(i) |
True if the vector contains the index i |
isEmpty |
True if the vector contains no elements |
lastIndexOf(e) |
The index of the last occurrence of the element e in the vector |
lastIndexOf(e,i) |
The index of the last occurrence of the element e in the vector, occurring before or at the index i |
lastIndexOfSlice(s) |
The index of the last occurrence of the sequence s in the vector |
lastIndexOfSlice(s,i) |
The index of the last occurrence of the sequence s in the vector, occurring before or at the index i |
lastIndexWhere(p) |
The index of the first element where the predicate p returns true |
lastIndexWhere(p,i) |
The index of the first element where the predicate p returns true, occurring before or at the index i |
max |
The largest element in the vector |
min |
The smallest element in the vector |
nonEmpty |
True if the vector is not empty (i.e., if it contains 1 or more elements) |
product |
The result of multiplying the elements in the collection |
segmentLength(p,i) |
The length of the longest segment for which the predicate p is true, starting at the index i |
size |
The number of elements in the vector |
startsWith(s) |
True if the vector begins with the elements in the sequence s |
startsWith(s,i) |
True if the vector has the sequence s starting at the index i |
sum |
The sum of the elements in the vector |
fold(s)(o) |
“Fold” the elements of the vector using the binary operator o, using an initial seed s (see also reduce) |
foldLeft(s)(o) |
“Fold” the elements of the vector using the binary operator o, using an initial seed s, going from left to right (see also reduceLeft) |
foldRight(s)(o) |
“Fold” the elements of the vector using the binary operator o, using an initial seed s, going from right to left (see also reduceRight) |
reduce |
“Reduce” the elements of the vector using the binary operator o |
reduceLeft |
“Reduce” the elements of the vector using the binary operator o, going from left to right |
reduceRight |
“Reduce” the elements of the vector using the binary operator o, going from right to left |
Examples
First, some sample data:
val evens = Vector(2, 4, 6)
val odds = Vector(1, 3, 5)
val fbb = "foo bar baz"
val firstTen = (1 to 10).toVector # Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val fiveToFifteen = (5 to 15).toVector # Vector(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
val empty = Vector[Int]() # Vector[Int] = Vector()
val letters = ('a' to 'f').toVector # Vector(a, b, c, d, e, f)
The examples:
evens.contains(2) # true
firstTen.containsSlice(Seq(3,4,5)) # true
firstTen.count(_ % 2 == 0) # 5
firstTen.endsWith(Seq(9,10)) # true
firstTen.exists(_ > 10) # false
firstTen.find(_ > 2) # Some(3)
firstTen.forall(_ < 20) # true
firstTen.hasDefiniteSize # true
empty.hasDefiniteSize # true
letters.indexOf('b') # 1 (zero-based)
letters.indexOf('d', 2) # 3
letters.indexOf('d', 3) # 3
letters.indexOf('d', 4) # -1
letters.indexOfSlice(Seq('c','d')) # 2
letters.indexOfSlice(Seq('c','d'),2) # 2
letters.indexOfSlice(Seq('c','d'),3) # -1
firstTen.indexWhere(_ == 3) # 2
firstTen.indexWhere(_ == 3, 2) # 2
firstTen.indexWhere(_ == 3, 5) # -1
letters.isDefinedAt(1) # true
letters.isDefinedAt(20) # false
letters.isEmpty # false
empty.isEmpty # true
# lastIndex...
val fbb = "foo bar baz"
fbb.indexOf('a') # 5
fbb.lastIndexOf('a') # 9
fbb.lastIndexOf('a', 10) # 9
fbb.lastIndexOf('a', 9) # 9
fbb.lastIndexOf('a', 6) # 5
fbb.lastIndexOf('a', 5) # 5
fbb.lastIndexOf('a', 4) # -1
fbb.lastIndexOfSlice("ar") # 5
fbb.lastIndexOfSlice(Seq('a','r')) # 5
fbb.lastIndexOfSlice(Seq('a','r'), 4) # -1
fbb.lastIndexOfSlice(Seq('a','r'), 5) # 5
fbb.lastIndexOfSlice(Seq('a','r'), 6) # 5
fbb.lastIndexWhere(_ == 'a') # 9
fbb.lastIndexWhere(_ == 'a', 4) # -1
fbb.lastIndexWhere(_ == 'a', 5) # 5
fbb.lastIndexWhere(_ == 'a', 6) # 5
fbb.lastIndexWhere(_ == 'a', 8) # 5
fbb.lastIndexWhere(_ == 'a', 9) # 9
firstTen.max # 10
letters.max # f
firstTen.min # 1
letters.min # a
letters.nonEmpty # true
empty.nonEmpty # false
firstTen.product # 3628800
letters.size # 6
val x = Vector(1,2,9,1,1,1,1,4)
x.segmentLength(_ < 4, 0) # 2
x.segmentLength(_ < 4, 2) # 0
x.segmentLength(_ < 4, 3) # 4
x.segmentLength(_ < 4, 4) # 3
firstTen.startsWith(Seq(1,2)) # true
firstTen.startsWith(Seq(1,2), 0) # true
firstTen.startsWith(Seq(1,2), 1) # false
firstTen.sum # 55
firstTen.fold(100)(_ + _) # 155
firstTen.foldLeft(100)(_ + _) # 155
firstTen.foldRight(100)(_ + _) # 155
firstTen.reduce(_ + _) # 55
firstTen.reduceLeft(_ + _) # 55
firstTen.reduceRight(_ + _) # 55
firstTen.fold(100)(_ - _) # 45
firstTen.foldLeft(100)(_ - _) # 45
firstTen.foldRight(100)(_ - _) # 95
firstTen.reduce(_ - _) # -53
firstTen.reduceLeft(_ - _) # -53
firstTen.reduceRight(_ - _) # -5
More on fold and reduce
- For more information on fold and reduce, see my article, Recursion is great, but ... (fold and reduce)
| this post is sponsored by my books: | |||
#1 New Release |
FP Best Seller |
Learn Scala 3 |
Learn FP Fast |
More information
I created this tutorial to show examples of Scala Vector informational and mathematical methods, but for many more examples of how to work with Vector, see my Scala Vector class syntax and method examples tutorial.