Java Program to Implement Sparse Matrix

This Java Program is to Implement Sparse Matrix.In the subfield of numerical analysis, a sparse matrix is a matrix populated primarily with zeros (Stoer & Bulirsch 2002, p. 619) as elements of the table. By contrast, if a larger number of elements differ from zero, then it is common to refer to the matrix as a dense matrix. The fraction of zero elements (non-zero elements) in a matrix is called the sparsity (density).

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

public class SparseMatrix
{
    private int N;
    private SparseArray sparsearray[];
 
    public SparseMatrix(int N)
    {
        this.N = N;
        sparsearray = new SparseArray[N];
        for (int index = 0; index < N; index++)
        {
            sparsearray[index] = new SparseArray(N);
        }
    }
 
    public void store(int rowindex, int colindex, Object value)
    {
        if (rowindex < 0 || rowindex > N)
            throw new RuntimeException("row index out of bounds");
        if (colindex < 0 || colindex > N)
            throw new RuntimeException("col index out of bounds");
        sparsearray[rowindex].store(colindex, value);
    }
 
    public Object get(int rowindex, int colindex)
    {
        if (rowindex < 0 || colindex > N)
            throw new RuntimeException("row index out of bounds");
        if (rowindex < 0 || colindex > N)
            throw new RuntimeException("col index out of bounds");
 
        return (sparsearray[rowindex].fetch(colindex));
    }
 
    public static void main(String... arg)
    {
        Integer[][] iarray = new Integer[3][3];
        iarray[0][0] = 1;
        iarray[0][1] = null;
        iarray[0][2] = 2;
        iarray[1][0] = null;
        iarray[1][1] = 3;
        iarray[1][2] = null;
        iarray[2][0] = 4;
        iarray[2][1] = 6;
        iarray[2][2] = null;
 
        SparseMatrix sparseMatrix = new SparseMatrix(3);
        for (int rowindex = 0; rowindex < 3; rowindex++)
        {
            for (int colindex = 0; colindex < 3; colindex++)
            {
                sparseMatrix.store(rowindex, colindex,
                iarray[rowindex][colindex]);
            }
        }
        System.out.println("the sparse Matrix is ");
        for (int rowindex = 0; rowindex < 3; rowindex++)
        {
            for (int colindex = 0; colindex < 3; colindex++)
            {
                System.out.print(sparseMatrix.get(rowindex, colindex) + "\t");
            }
            System.out.println();
        }
    }
}
 
class List
{
    private int index;
    private Object value;
    private List nextindex;
 
    public List(int index)
    {
        this.index = index;
        nextindex = null;
        value = null;
    }
 
    public List()
    {
        index = -1;
        value = null;
        nextindex = null;
    }
 
    public void store(int index, Object value)
    {
        List current = this;
        List previous = null;
 
        List node = new List(index);
        node.value = value;
        while (current != null && current.index < index)
        {
            previous = current;
            current = current.nextindex;
        }
        if (current == null)
        {
            previous.nextindex = node;
        }
        else
        {
            if (current.index == index)
            {
                System.out.println("DUPLICATE INDEX");
                return;
            }
            previous.nextindex = node;
            node.nextindex = current;
        }
        return;
    }
 
    public Object fetch(int index)
    {
        List current = this;
        Object value = null;
        while (current != null && current.index != index)
        {
            current = current.nextindex;
        }
        if (current != null)
        {
            value = current.value;
        }
        else
        {
            value = null;
        }
        return value;
    }
 
    public int elementCount()
    {
        int elementCount = 0;
        for (List current = this.nextindex; (current != null); current = current.nextindex)
        {
            elementCount++;
        }
        return elementCount;
    }
}
 
public class SparseArray
{
    private List start;
    private int index;
 
    SparseArray(int index)
    {
        start = new List();
        this.index = index;
    }
 
    public void store(int index, Object value)
    {
        if (index >= 0 && index < this.index)
        {
            if (value != null)
                start.store(index, value);
        } else
        {
            System.out.println("INDEX OUT OF BOUNDS");
        }
    }
 
    public Object fetch(int index)
    {
        if (index >= 0 && index < this.index)
            return start.fetch(index);
        else
        {
            System.out.println("INDEX OUT OF BOUNDS");
            return null;
        }
    }
 
    public int elementCount()
    {
        return start.elementCount();
    }
}
$javac SparseMatrix.java
$java SparseMatrix
the sparse Matrix is 
1    null  2	
null 3     null	
4    6     null

Related posts:

Spring Cloud AWS – Messaging Support
An Intro to Spring Cloud Security
Java Program to Implement Borwein Algorithm
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
Running Spring Boot Applications With Minikube
Java Program to Implement Min Heap
Default Password Encoder in Spring Security 5
Tiêu chuẩn coding trong Java (Coding Standards)
Spring Security – security none, filters none, access permitAll
Java Program to Implement Extended Euclid Algorithm
Spring Boot - Cloud Configuration Server
Java Program to Find Nearest Neighbor Using Linear Search
Java Program to Implement LinkedList API
Java Program to Implement LinkedTransferQueue API
Java Program to Implement Binary Heap
Java Program to Convert a Decimal Number to Binary Number using Stacks
How to Read HTTP Headers in Spring REST Controllers
Java Program to Implement Word Wrap Problem
Java Program to Implement Stack API
Java Program to Check if a Directed Graph is a Tree or Not Using DFS
Java Program to Implement Hash Tables Chaining with List Heads
Java Program to Implement Leftist Heap
CharSequence vs. String in Java
Java Program to Implement Sparse Array
Java Program to Perform Stooge Sort
Java Program to Check Whether a Given Point is in a Given Polygon
Spring Data – CrudRepository save() Method
Hướng dẫn Java Design Pattern – Null Object
Java Program to Implement Self Balancing Binary Search Tree
Java – Write to File
Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
Extract links from an HTML page