StoreWithArray.java

public abstract class StoreWithArray implements STORE {

   Object[] array = new Object[10];

   int length = 0;

   public boolean isEmpty() {
      return length == 0;
   }

   protected void growTo(int newsize) {
   // Assume newsize > length 
      if(newsize > array.length) {
         int growsize = array.length*2;
         while (newsize > growsize) {growsize = 2*growsize;};
         Object[] newArray = new Object[growsize];
         for (int i = 0; i < length; i++) {
            newArray[i] = array[i];
         };
         array = newArray;
      };
   }

   protected void shrinkTo(int newsize) {
   // Assume newsize <= length
      if(newsize <= array.length/2) {
         int shrinksize = array.length/2;
         while (newsize <= shrinksize/2 & shrinksize >= 2) {
            shrinksize = shrinksize/2;
         };
         Object[] newArray = new Object[shrinksize];
         for (int i = 0; i < length; i++) {
            newArray[i] = array[i];
         };
         array = newArray;
      };
   }

   public void add(Object o) {
      int ol = length;
      growTo(length+1);
      length++;
      array[ol] = o;
   }

   public void addAll(Object[] a) {
      for(int i = 0; i < a.length; i++) {
         add(a[i]);
      }
   }

   public Object remove() {
      if (isEmpty()) {return null;};
      Object o = array[--length];
      shrinkTo(length);
      return o;
   }
}


On to PQueue.java Part of Priority Queues mit Java
Andreas Podelski, Abdelwaheb Ayari, Hubert Baumeister
February 25, 1997

Imprint | Data Protection