This Java program is to Implement Sparse array. In computer science, a sparse array is an array in which most of the elements have the same value (known as the default value—usually 0 or null). The occurrence of zero elements in a large array is inefficient for both computation and storage. An array in which there is a large number of zero elements is referred to as being sparse.
Here is the source code of the Java program to implement sparse array. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
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(); } public static void main(String... arg) { Integer[] iarray = new Integer[5]; iarray[0] = 1; iarray[1] = null; iarray[2] = 2; iarray[3] = null; iarray[4] = null; SparseArray sparseArray = new SparseArray(5); for (int i = 0; i < iarray.length; i++) { sparseArray.store(i, iarray[i]); } System.out.println("NORMAL ARRAY"); for (int i = 0 ; i < iarray.length; i++) { System.out.print(iarray[i] + "\t"); } System.out.println("\nSPARSE ARRAY"); for (int i = 0; i < iarray.length; i++) { if (sparseArray.fetch(i) != null) System.out.print(sparseArray.fetch(i) + "\t"); } System.out.println("The Size of Sparse Array is " + sparseArray.elementCount()); } }
$javac SparseArray.java $java SparseArray NORMAL ARRAY 1 null 2 null null SPARSE ARRAY 1 2 The Size of Sparse Array 2
Related posts:
Java Program to Construct an Expression Tree for an Infix Expression
Hướng dẫn Java Design Pattern – Singleton
Spring Boot - Service Components
Show Hibernate/JPA SQL Statements from Spring Boot
OAuth2 for a Spring REST API – Handle the Refresh Token in AngularJS
Java Program to Implement Sieve Of Atkin
Java Program to Check if an UnDirected Graph is a Tree or Not Using DFS
Java Program to Implement Circular Doubly Linked List
Spring Boot - Code Structure
Java Program to find the maximum subarray sum using Binary Search approach
Tìm hiểu về Web Service
Overflow and Underflow in Java
Multipart Upload with HttpClient 4
Introduction to Spring Boot CLI
Java Program to Check Cycle in a Graph using Topological Sort
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
ClassNotFoundException vs NoClassDefFoundError
Java Stream Filter with Lambda Expression
Understanding Memory Leaks in Java
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Immutable Map Implementations in Java
Java Program to Solve any Linear Equation in One Variable
Inheritance with Jackson
Spring Webflux and CORS
Composition, Aggregation, and Association in Java
Java Program to implement Array Deque
Connect through a Proxy
Performance Difference Between save() and saveAll() in Spring Data
Reactive WebSockets with Spring 5
Simple Single Sign-On with Spring Security OAuth2
The Difference Between Collection.stream().forEach() and Collection.forEach()
SOAP Web service: Authentication trong JAX-WS