@Override public int deleteMin() { while (buckets[minIdx].isEmpty()) { minIdx = (minIdx + 1) & MODULO_MASK; } size--; final int elementId = buckets[minIdx].popFront().value; return elementId; }
protected final MaterialRequestObject findRequestInQueue(DoubleLinkedList<MaterialRequestObject> queue) { int numberOfElements = queue.size(); for (int handledElements = 0; handledElements < numberOfElements; handledElements++) { MaterialRequestObject request = queue.getFront(); // if the request is done if (request.isFinished()) { request.requestQueue = null; queue.popFront(); // remove the request numberOfElements--; } // if all needed are in delivery, or there can not be any more in delivery else if (!request.canTakeMoreOffers()) { queue.pushEnd(queue.popFront()); // move the request to the end. } // everything fine, take this request else { if (request.isRoundRobinRequest()) { queue.pushEnd(queue.popFront()); // put the request to the end of the queue. } return request; } } return null; }
private void assertListEquals(DoubleLinkedList<DoubleLinkedIntListItem> list0, DoubleLinkedList<DoubleLinkedIntListItem> list1) { assertEquals(list0.size(), list1.size()); int size = list0.size(); for (int i = 0; i < size; i++) { assertEquals(list0.popFront().value, list1.popFront().value); } assertEquals(0, list0.size()); assertEquals(0, list1.size()); }
@Test public void testPushFrontAndPopFront() { assertEquals(0, list.size()); for (int i = 0; i < TEST_NUMBERS; i++) { list.pushFront(new DoubleLinkedIntListItem(i)); assertEquals(i + 1, list.size()); } for (int i = TEST_NUMBERS - 1; i >= 0; i--) { assertEquals(i + 1, list.size()); assertEquals(i, list.popFront().value); } assertEquals(0, list.size()); }
@Test public void testPushEndAndPopFront() { assertEquals(0, list.size()); for (int i = 0; i < TEST_NUMBERS; i++) { list.pushEnd(new DoubleLinkedIntListItem(i)); assertEquals(i + 1, list.size()); } for (int i = 0; i < TEST_NUMBERS; i++) { assertEquals(10 - i, list.size()); assertEquals(i, list.popFront().value); } assertEquals(0, list.size()); }
@Test public void testRemoveByHandle() { DoubleLinkedIntListItem handles[] = new DoubleLinkedIntListItem[TEST_NUMBERS]; for (int i = 0; i < TEST_NUMBERS; i++) { handles[i] = new DoubleLinkedIntListItem(i); list.pushFront(handles[i]); } list.remove(handles[4]); list.remove(handles[7]); assertEquals("incorrect size after removing 2 values", TEST_NUMBERS - 2, list.size()); assertNull("the removed item should not hold a 'next' reference", handles[4].next); assertNull("the removed item should not hold a 'prev' reference", handles[4].prev); assertNull("the removed item should not hold a 'next' reference", handles[7].next); assertNull("the removed item should not hold a 'prev' reference", handles[7].prev); for (int i = TEST_NUMBERS - 1; i >= 0; i--) { if (i == 4 || i == 7) { // skip the removed values continue; } assertEquals(i, list.popFront().value); } assertEquals("incorrect size after popFront all values", 0, list.size()); }