1: // Doubles the size of the array queue if it is full 2: // Precondition: checkInitialization has been called. 3: private void ensureCapacity() 4: { 5: if (frontIndex == ((backIndex + 2) % queue.length)) // if array is full, 6: { // double size of array 7: T[] oldQueue = queue; 8: int oldSize = oldQueue.length; 9: int newSize = 2 * oldSize; 10: checkCapacity(newSize); 11: 12: // The cast is safe because the new array contains null entries 13: @SuppressWarnings("unchecked") 14: T[] tempQueue = (T[]) new Object[2 * oldSize]; 15: queue = tempQueue; 16: for (int index = 0; index < oldSize - 1; index++) 17: { 18: queue[index] = oldQueue[frontIndex]; 19: frontIndex = (frontIndex + 1) % oldSize; 20: } // end for 21: 22: frontIndex = 0; 23: backIndex = oldSize - 2; 24: } // end if 25: } // end ensureCapacity 26: // Version 4.0