Java Program to implement Bit Matrix

This is a Java Program to implement Bit Matrix. Here bit matrix is implemented as an array of bit sets.

Here is the source code of the Java Program to implement Bit Matrix. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

/**
 ** Java Program to implement Bit Matrix
 **/
 
import java.util.Scanner;
import java.util.BitSet;
 
/** class bit Matrix */
class BitMatrix
{
    private BitSet[] bitArr;
 
    /** constructor **/
    public BitMatrix(int rows, int cols)
    {
        bitArr = new BitSet[rows];
        for (int i = 0; i < rows; i++)
            bitArr[i] = new BitSet(cols);
    } 
    /** function to clear **/
    public void clear()
    {
        int rows = bitArr.length;
        int cols = bitArr[0].size();
        bitArr = new BitSet[rows];
        for (int i = 0; i < rows; i++)
            bitArr[i] = new BitSet(cols);       
    }
    /** function to clear a particular row **/
    public void clear(int r)
    {
        bitArr[r].clear();
    }
    /** function to clear a particular bit **/
    public void clear(int r, int c)
    {
        bitArr[r].clear(c);
    }    
    /** function to get a particular bit **/
    public boolean get(int r, int c)
    {
        return bitArr[r].get(c);
    }    
    /** function to set a particular bit **/
    public void set(int r, int c)
    {
        bitArr[r].set(c);
    }
    /** function to OR two rows **/
    public void or(int r1, int r2)
    {
        bitArr[r1].or(bitArr[r2]);
    }    
    /** function to And two rows **/
    public void and(int r1, int r2)
    {
        bitArr[r1].and(bitArr[r2]);
    }    
    /** function to XOR two rows **/
    public void xor(int r1, int r2)
    {
        bitArr[r1].xor(bitArr[r2]);
    }       
    /** function to display bitset */
    public void display()
    {
        System.out.println("\nBit Matrix : ");
        for (BitSet bs : bitArr)
               System.out.println(bs);
        System.out.println();
    }    
}
 
/** BitMatrixTest **/
public class BitMatrixTest
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Bit Matrix Test\n");   
 
        System.out.println("Enter row and column dimensions");
        BitMatrix bm = new BitMatrix(scan.nextInt(), scan.nextInt() );
 
        char ch;
        /*  Perform Bit Matrix operations */
        do    
        {
            System.out.println("\nBit Matrix Operations\n");
            System.out.println("1. or ");
            System.out.println("2. and");
            System.out.println("3. xor");
            System.out.println("4. clear");
            System.out.println("5. set");
            System.out.println("6. get");            
 
            int choice = scan.nextInt();            
            switch (choice) 
            {
            case 1 : 
                System.out.println("Enter row1 and row2 to OR");
                bm.or(scan.nextInt(), scan.nextInt() );                     
                break;                          
            case 2 : 
                System.out.println("Enter row1 and row2 to AND");
                bm.and(scan.nextInt(), scan.nextInt() );      
                break;                                          
            case 3 : 
                System.out.println("Enter row1 and row2 to XOR");
                bm.xor(scan.nextInt(), scan.nextInt() );      
                break;
            case 4 : 
                System.out.println("\nBit matrix Cleared");
                bm.clear();
                break;    
            case 5 : 
                System.out.println("Enter row and column to set bit");
                bm.set(scan.nextInt(), scan.nextInt() );
                break;         
            case 6 : 
                System.out.println("Enter row and column to get bit status");
                System.out.println("\nStatus : "+ bm.get(scan.nextInt(), scan.nextInt()));
                break;
            default : 
                System.out.println("Wrong Entry \n ");
                break;   
            }    
            bm.display();
 
            System.out.println("\nDo you want to continue (Type y or n) \n");
            ch = scan.next().charAt(0);                        
        } while (ch == 'Y'|| ch == 'y');         
    }
}
Bit Matrix Test
 
Enter row and column dimensions
4 4
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
5
Enter row and column to set bit
0 24
 
Bit Matrix :
{24}
{}
{}
{}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
5
Enter row and column to set bit
0 6
 
Bit Matrix :
{6, 24}
{}
{}
{}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
5
Enter row and column to set bit
1 28
 
Bit Matrix :
{6, 24}
{28}
{}
{}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
5
Enter row and column to set bit
1 5
 
Bit Matrix :
{6, 24}
{5, 28}
{}
{}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
1
Enter row1 and row2 to OR
2 0
 
Bit Matrix :
{6, 24}
{5, 28}
{6, 24}
{}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
2
Enter row1 and row2 to AND
0 3
 
Bit Matrix :
{}
{5, 28}
{6, 24}
{}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
3
Enter row1 and row2 to XOR
3 2
 
Bit Matrix :
{}
{5, 28}
{6, 24}
{6, 24}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
3
Enter row1 and row2 to XOR
3 1
 
Bit Matrix :
{}
{5, 28}
{6, 24}
{5, 6, 24, 28}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
6
Enter row and column to get bit status
0 3
 
Status : false
 
Bit Matrix :
{}
{5, 28}
{6, 24}
{5, 6, 24, 28}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
6
Enter row and column to get bit status
1 28
 
Status : true
 
Bit Matrix :
{}
{5, 28}
{6, 24}
{5, 6, 24, 28}
 
 
Do you want to continue (Type y or n)
 
y
 
Bit Matrix Operations
 
1. or
2. and
3. xor
4. clear
5. set
6. get
4
 
Bit matrix Cleared
 
Bit Matrix :
{}
{}
{}
{}
 
 
Do you want to continue (Type y or n)
 
n

Related posts:

Java Program to Implement Find all Forward Edges in a Graph
Spring Boot - Internationalization
Creating a Custom Starter with Spring Boot
Java Program to Implement Counting Sort
Java Program to Find All Pairs Shortest Path
Java Program to Implement Knight’s Tour Problem
Java Program to Construct an Expression Tree for an Infix Expression
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Java Program to Solve Tower of Hanoi Problem using Stacks
Java Program to Implement Interval Tree
Guide to Apache Commons CircularFifoQueue
Xây dựng ứng dụng Client-Server với Socket trong Java
Các kiểu dữ liệu trong java
Java Program to Implement Radix Sort
Bootstrap a Web Application with Spring 5
Map Serialization and Deserialization with Jackson
Java Program to Implement SynchronosQueue API
Java Program to Find the GCD and LCM of two Numbers
How to Get a Name of a Method Being Executed?
So sánh ArrayList và Vector trong Java
Spring Boot - File Handling
Dockerizing a Spring Boot Application
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
String Joiner trong Java 8
Java Program to Implement TreeMap API
Logout in an OAuth Secured Application
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
The Registration API becomes RESTful
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
A Guide to System.exit()
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?