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:
@DynamicUpdate with Spring Data JPA
Spring REST API + OAuth2 + Angular
Java Program to Implement Hash Tables with Linear Probing
Sử dụng CountDownLatch trong Java
Using JWT with Spring Security OAuth
Hướng dẫn Java Design Pattern – Bridge
Mảng (Array) trong Java
Java Collections Interview Questions
Java Program to implement Sparse Vector
Spring AMQP in Reactive Applications
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Java Program to Find the Median of two Sorted Arrays using Binary Search Approach
Consuming RESTful Web Services
Java Program to Solve Tower of Hanoi Problem using Stacks
A Guide to JUnit 5
Giới thiệu Design Patterns
Tiêu chuẩn coding trong Java (Coding Standards)
Spring Boot - Quick Start
HashSet trong Java hoạt động như thế nào?
An Intro to Spring Cloud Zookeeper
Java Program to Find Basis and Dimension of a Matrix
Java Program to Perform the Sorting Using Counting Sort
Allow user:password in URL
Java 9 Stream API Improvements
Java Program to Implement D-ary-Heap
Java Program to Implement Binomial Tree
Java toString() Method
Spring Boot Application as a Service
Wiring in Spring: @Autowired, @Resource and @Inject
Java Program to Implement LinkedList API
Exploring the New Spring Cloud Gateway
Predicate trong Java 8