Why addLast() not working properly

I created a DeQueue as follws

Deque<Integer> deque = new ArrayDeque<Integer>(8);

// use add() method to add elements in the deque
deque.add(20);
deque.add(30);
deque.addLast(12);
deque.add(18);        
deque.addFirst(22);
deque.add(24);

// let us print all the elements available in deque
for (Integer number : deque) {
    System.out.println("Number = " + number);
}

The expected output is:

Number = 22
Number = 20
Number = 30
Number = 18
Number = 24
Number = 12

But the actual output is :

Number = 22
Number = 20
Number = 30
Number = 12
Number = 18
Number = 24

Anybody please explain this?

Jon Skeet
people
quotationmark

addLast doesn't somehow maintain a notion of "this should be last" forever - it just adds to the end of the current dequeue. It's equivalent to add, as documented.

So if we look at the values at each step, we have:

deque.add(20);      // Contents: 20
deque.add(30);      // Contents: 20, 30
deque.addLast(12);  // Contents: 20, 30, 12
deque.add(18);      // Contents: 20, 30, 12, 18
deque.addFirst(22); // Contents: 22, 20, 30, 12, 18
deque.add(24);      // Contents: 22, 20, 30, 12, 18, 24

... which exactly corresponds to the output you got.

people

See more on this question at Stackoverflow