/** * Adds a new element to the end of the list and returns it. If the inner array isn't large enough * then it will grow. * @return instance at the tail */ public T grow() { if( size >= data.length) { T a = createInstance(); add(a); return a; } else { T a = data[(start+size)%data.length]; if( a == null ) { data[(start+size)%data.length] = a = createInstance(); } size++; return a; } }
/** * Adds a new element to the end of the list and returns it. If the inner array isn't large enough * then it will grow. * @return instance at the tail */ public T grow() { if( size >= data.length) { T a = createInstance(); add(a); return a; } else { T a = data[(start+size)%data.length]; if( a == null ) { data[(start+size)%data.length] = a = createInstance(); } size++; return a; } }
assertEquals(3,alg.data.length); alg.add( new A(1)); assertEquals(1,alg.data[0].value); assertEquals(1,alg.size); alg.add( new A(2)); assertEquals(1,alg.data[0].value); assertEquals(2,alg.data[1].value); alg.add( new A(3)); alg.add( new A(4)); assertEquals(1,alg.data[0].value); assertEquals(2,alg.data[1].value); alg.data = new A[]{new A(1),new A(2), new A(3)}; alg.size = 3; alg.add( new A(4)); assertEquals(2,alg.data[0].value); assertEquals(3,alg.data[1].value); alg.size = 2; alg.data = new A[3]; alg.add( new A(10)); assertEquals(10,alg.data[0].value); assertEquals(3,alg.size);
@Test public void isEmpty() { CircularQueue<A> alg = new CircularQueue<A>(A.class,3); assertTrue(alg.isEmpty()); alg.add(new A(5)); assertFalse(alg.isEmpty()); alg.removeTail(); assertTrue(alg.isEmpty()); }