Guest User

Untitled

a guest
Apr 24th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.00 KB | None | 0 0
  1. public class QueueArrayBuffer<T> {
  2.  
  3.     public abstract class Iterator {
  4.         private int i = 0;
  5.  
  6.         public abstract void next(final T element);
  7.  
  8.         public final void delete_current() {
  9.             delete(i);
  10.         }
  11.     }
  12.  
  13.     private final T[] buffer;
  14.     private final int size;
  15.     private int first = 0;
  16.     private int last = 0;
  17.  
  18.     @SuppressWarnings("unchecked")
  19.     public QueueArrayBuffer(final int size) {
  20.         this.size = size;
  21.         buffer = (T[]) new Object[size];
  22.     }
  23.  
  24.     public void put(final T element) {
  25.         if ((last + 1) % size == first)
  26.             delete(first);
  27.         last = (last + 1) % size;
  28.         buffer[last] = element;
  29.     }
  30.  
  31.     private void delete(final int index) {
  32.         buffer[index] = null;
  33.         if (first == index)
  34.             while (buffer[first] == null && first != last)
  35.                 first = (first + 1) % size;
  36.     }
  37.  
  38.     public void iterate(final Iterator iterator) {
  39.         iterator.i = first;
  40.         while (iterator.i != last) {
  41.             if (buffer[iterator.i] != null)
  42.                 iterator.next(buffer[iterator.i]);
  43.             iterator.i = (iterator.i + 1) % size;
  44.         }
  45.     }
  46.  
  47. }
Add Comment
Please, Sign In to add comment