
- Scala Collections - Home
- Scala Collections - Overview
- Scala Collections - Environment Setup
- Scala Collections - Arrays
- Scala Collections - Array
- Scala Collections - Multi-Dimensional Array
- Scala Collections - Array using Range
- Scala Collections - ArrayBuffer
- Scala Collections - Lists
- Scala Collections - List
- Scala Collections - ListBuffer
- Scala Collections - ListSet
- Scala Collections - Vector
- Scala Collections - Sets
- Scala Collections - Set
- Scala Collections - BitSet
- Scala Collections - HashSet
- Scala Collections - TreeSet
- Scala Collections - Maps
- Scala Collections - Map
- Scala Collections - HashMap
- Scala Collections - ListMap
- Scala Collections - Miscellaneous
- Scala Collections - Iterator
- Scala Collections - Option
- Scala Collections - Queue
- Scala Collections - Tuple
- Scala Collections - Seq
- Scala Collections - Stack
- Scala Collections - Stream
- Scala Collections Combinator methods
- Scala Collections - drop
- Scala Collections - dropWhile
- Scala Collections - filter
- Scala Collections - find
- Scala Collections - flatMap
- Scala Collections - flatten
- Scala Collections - fold
- Scala Collections - foldLeft
- Scala Collections - foldRight
- Scala Collections - map
- Scala Collections - partition
- Scala Collections - reduce
- Scala Collections - scan
- Scala Collections - zip
- Scala Collections Useful Resources
- Scala Collections - Quick Guide
- Scala Collections - Useful Resources
- Scala Collections - Discussion
Scala Collections - BitSet
Bitset is a common base class for mutable and immutable bitsets. Bitsets are sets of non-negative integers and are represented as variable-size arrays of bits packed into 64-bit words. The memory footprint of a bitset is represented by the largest number stored in it.
Declaring BitSet Variables
The following is the syntax for declaring an BitSet variable.
Syntax
var z : BitSet = BitSet(0,1,2)
Here, z is declared as an bit-set of non-negative integers which has three members. Values can be added by using commands like the following −
Command
var myList1: BitSet = myList + 3;
Processing BitSet
Below is an example program of showing how to create, initialize and process BitSet −
Example
import scala.collection.immutable.BitSet object Demo { def main(args: Array[String]) = { var mySet: BitSet = BitSet(0, 1, 2); // Add an element var mySet1: BitSet = mySet + 3; // Remove an element var mySet2: BitSet = mySet - 2; var mySet3: BitSet = BitSet(4, 5); // Adding sets var mySet4: BitSet = mySet1 ++ mySet3; println(mySet); println(mySet1); println(mySet2); println(mySet4); } }
Save the above program in Demo.scala. The following commands are used to compile and execute this program.
Command
\>scalac Demo.scala \>scala Demo
Output
BitSet(0, 1, 2) BitSet(0, 1, 2, 3) BitSet(0, 1) BitSet(0, 1, 2, 3, 4, 5)
Checking Membership
You can check if a value is present in a BitSet using the contains method. This method returns true if the value is present, and false otherwise.
Example
Try following example for checking membership -
import scala.collection.immutable.BitSet object Demo { def main(args: Array[String]) = { var mySet: BitSet = BitSet(0, 1, 2, 3, 4, 5) // Check if the BitSet contains 3 println(mySet.contains(3)) // Check if the BitSet contains 6 println(mySet.contains(6)) } }
Save the above program in Demo.scala. Use the following commands to compile and execute this program.
Command
> scalac Demo.scala > scala Demo
Output
true false
Finding Maximum and Minimum Elements
You can find the maximum and minimum elements in a BitSet using the max and min methods, respectively.
Example
Try following example for finding min and max elements -
import scala.collection.immutable.BitSet object Demo { def main(args: Array[String]) = { var mySet: BitSet = BitSet(0, 1, 2, 3, 4, 5) // Find the maximum element println("Max element: " + mySet.max) // Find the minimum element println("Min element: " + mySet.min) } }
Save the above program in Demo.scala. Use the following commands to compile and execute this program.
Command
> scalac Demo.scala > scala Demo
Output
Max element: 5 Min element: 0
Converting BitSet to List
You can convert a BitSet to a List using the toList method. This is useful when you need to work with a list of elements.
Example
Try following example for converting BitSet elements to List elements.
import scala.collection.immutable.BitSet object Demo { def main(args: Array[String]) = { var mySet: BitSet = BitSet(0, 1, 2, 3, 4, 5) // Convert BitSet to List val myList = mySet.toList println("List: " + myList) } }
Save the above program in Demo.scala. Use the following commands to compile and execute this program.
Command
> scalac Demo.scala > scala Demo
Output
List: List(0, 1, 2, 3, 4, 5)
Converting BitSet to Array
You can convert a BitSet to an Array using the toArray method. This is useful when you need to work with an array of elements.
Example
Try following example for converting a BitSet to Array -
import scala.collection.immutable.BitSet object Demo { def main(args: Array[String]) = { var mySet: BitSet = BitSet(0, 1, 2, 3, 4, 5) // Convert BitSet to Array val myArray = mySet.toArray println("Array: " + myArray.mkString(", ")) } }
Save the above program in Demo.scala. Use the following commands to compile and execute this program.
Command
> scalac Demo.scala > scala Demo
Output
Array: 0, 1, 2, 3, 4, 5
Intersection of BitSets
You can find the intersection of two BitSets using the & operator. This method returns a new BitSet containing elements that are present in both BitSets.
Example
Try following example of intersection of BitSet -
import scala.collection.immutable.BitSet object Demo { def main(args: Array[String]) = { var mySet1: BitSet = BitSet(0, 1, 2, 3, 4, 5) var mySet2: BitSet = BitSet(3, 4, 5, 6, 7, 8) // Intersection of two BitSets val intersectSet = mySet1 & mySet2 println("Intersection: " + intersectSet) } }
Save the above program in Demo.scala. Use the following commands to compile and execute this program.
Command
> scalac Demo.scala > scala Demo
Output
Intersection: BitSet(3, 4, 5)
Difference of BitSets
You can find the difference of two BitSets using the &~ operator. This method returns a new BitSet containing elements that are present in the first BitSet but not in the second.
Example
Try following example of difference between two BitSets -
import scala.collection.immutable.BitSet object Demo { def main(args: Array[String]) = { var mySet1: BitSet = BitSet(0, 1, 2, 3, 4, 5) var mySet2: BitSet = BitSet(3, 4, 5, 6, 7, 8) // Difference of two BitSets val diffSet = mySet1 &~ mySet2 println("Difference: " + diffSet) } }
Save the above program in Demo.scala. Use the following commands to compile and execute this program.
Command
> scalac Demo.scala > scala Demo
Output
Difference: BitSet(0, 1, 2)
Checking Subset
You can check if one BitSet is a subset of another using the subsetOf method. This method returns true if all elements of the first BitSet are present in the second BitSet.
Example
Try following example for checking subset -
import scala.collection.immutable.BitSet object Demo { def main(args: Array[String]) = { var mySet1: BitSet = BitSet(1, 2, 3) var mySet2: BitSet = BitSet(1, 2, 3, 4, 5) // Check if mySet1 is a subset of mySet2 val isSubset = mySet1.subsetOf(mySet2) println("Is mySet1 a subset of mySet2? " + isSubset) } }
Save the above program in Demo.scala. Use the following commands to compile and execute this program.
Command
> scalac Demo.scala > scala Demo
Output
Is mySet1 a subset of mySet2? true
Scala BitSet Summary
- BitSet in Scala is a data structure that represents sets of non-negative integers using variable-size arrays of bits.
- You can perform set operations, like, union, intersection, and difference in elements of BitSet.
- You can also add, remove, and check membership of elements in BitSet.
- Scala supports both immutable and mutable BitSets.
- You can also apply higher-order functions like map, filter, and foreach in elements of BitSet.