This is a Java Program to implement Circular Buffer. A circular buffer, cyclic buffer or ring buffer is a data structure that uses a single, fixed-size buffer as if it were connected end-to-end. This structure lends itself easily to buffering data streams.
Here is the source code of the Java Program to implement Circular Buffer. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/** ** Java Program to implement Circular Buffer **/ import java.util.Scanner; /** Class Circular Buffer **/ class CircularBuffer { private int maxSize; private int front = 0; private int rear = 0; private int bufLen = 0; private char[] buf; /** constructor **/ public CircularBuffer(int size) { maxSize = size; front = rear = 0; rear = 0; bufLen = 0; buf = new char[maxSize]; } /** function to get size of buffer **/ public int getSize() { return bufLen; } /** function to clear buffer **/ public void clear() { front = rear = 0; rear = 0; bufLen = 0; buf = new char[maxSize]; } /** function to check if buffer is empty **/ public boolean isEmpty() { return bufLen == 0; } /** function to check if buffer is full **/ public boolean isFull() { return bufLen == maxSize; } /** insert an element **/ public void insert(char c) { if (!isFull() ) { bufLen++; rear = (rear + 1) % maxSize; buf[rear] = c; } else System.out.println("Error : Underflow Exception"); } /** delete an element **/ public char delete() { if (!isEmpty() ) { bufLen--; front = (front + 1) % maxSize; return buf[front]; } else { System.out.println("Error : Underflow Exception"); return ' '; } } /** function to print buffer **/ public void display() { System.out.print("\nBuffer : "); for (int i = 0; i < maxSize; i++) System.out.print(buf[i] +" "); System.out.println(); } } /** Class CircularBufferTest **/ public class CircularBufferTest { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Circular Buffer Test\n"); System.out.println("Enter Size of Buffer "); int n = scan.nextInt(); /* creating object of class CircularBuffer */ CircularBuffer cb = new CircularBuffer(n); /* Perform Circular Buffer Operations */ char ch; do { System.out.println("\nCircular Buffer Operations"); System.out.println("1. insert"); System.out.println("2. remove"); System.out.println("3. size"); System.out.println("4. check empty"); System.out.println("5. check full"); System.out.println("6. clear"); int choice = scan.nextInt(); switch (choice) { case 1 : System.out.println("Enter character to insert"); cb.insert( scan.next().charAt(0) ); break; case 2 : System.out.println("Removed Element = "+ cb.delete()); break; case 3 : System.out.println("Size = "+ cb.getSize()); break; case 4 : System.out.println("Empty status = "+ cb.isEmpty()); break; case 5 : System.out.println("Full status = "+ cb.isFull()); break; case 6 : System.out.println("\nBuffer Cleared\n"); cb.clear(); break; default : System.out.println("Wrong Entry \n "); break; } /* display Buffer */ cb.display(); System.out.println("\nDo you want to continue (Type y or n) \n"); ch = scan.next().charAt(0); } while (ch == 'Y'|| ch == 'y'); } }
Circular Buffer Test Enter Size of Buffer 5 Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 1 Enter character to insert a Buffer : a Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 1 Enter character to insert b Buffer : a b Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 1 Enter character to insert c Buffer : a b c Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 1 Enter character to insert d Buffer : a b c d Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 1 Enter character to insert e Buffer : e a b c d Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 1 Enter character to insert f Error : Underflow Exception Buffer : e a b c d Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 2 Removed Element = a Buffer : e a b c d Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 1 Enter character to insert f Buffer : e f b c d Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 3 Size = 5 Buffer : e f b c d Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 5 Full status = true Buffer : e f b c d Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 2 Removed Element = b Buffer : e f b c d Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 3 Size = 4 Buffer : e f b c d Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 6 Buffer Cleared Buffer : Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 3 Size = 0 Buffer : Do you want to continue (Type y or n) y Circular Buffer Operations 1. insert 2. remove 3. size 4. check empty 5. check full 6. clear 4 Empty status = true Buffer : Do you want to continue (Type y or n) n
Related posts:
Show Hibernate/JPA SQL Statements from Spring Boot
Custom HTTP Header with the HttpClient
Java Program to Perform Quick Sort on Large Number of Elements
Java Program to Check the Connectivity of Graph Using DFS
Java – String to Reader
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Kiểu dữ liệu Ngày Giờ (Date Time) trong java
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Introduction to Spring Boot CLI
Java Program to Implement the Alexander Bogomolny’s UnOrdered Permutation Algorithm for Elements Fro...
Java Program to Implement Repeated Squaring Algorithm
Java Program to Use rand and srand Functions
Introduction to Eclipse Collections
Java Program to Find Maximum Element in an Array using Binary Search
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
An Introduction to Java.util.Hashtable Class
Java Program to Implement LinkedBlockingDeque API
Java Program to implement Priority Queue
Java Program to Implement Vector API
Java Program to Implement Attribute API
An Intro to Spring Cloud Contract
Java Program to Find the Connected Components of an UnDirected Graph
Spring Cloud Connectors and Heroku
Working with Tree Model Nodes in Jackson
Hướng dẫn Java Design Pattern – Factory Method
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Lớp lồng nhau trong java (Java inner class)
“Stream has already been operated upon or closed” Exception in Java
A Guide to Spring Boot Admin
Compact Strings in Java 9
Java Program to Implement Horner Algorithm
Java – InputStream to Reader