My remove() method on my own ArrayBasedList Class removing wrong index
<p>I've finally figured out my insert correctly but for days I've been working on the remove method and it just will not give me the output I want. My remove method is removing only the last index and not at the position I specified. My method must be a boolean with an int position parameter brought it to the method. What must I do to get my code to remove an object at the specified position parameter given, not the last index. 
My code is below...</p>

<pre><code>public class ArrayBasedList&lt;T&gt; implements ListInterface&lt;T&gt;{
    private int MAX_ITEMS = 20;      // Maximum Number of items the items array can hold.
    private Item&lt;T&gt;[] items;        // Array that will hold items of type T
    private int count;          // Number of valid items in the array  

    ArrayBasedList(){
        items = new Item[MAX_ITEMS];
        count = 0;
    }

    public void add(T item) {
        if(isFull()) return;
        items[count] =  new Item(item);
        count++;
    }

    public void insert(int position, T item) {
        for(int i = count-1; i &gt;= 0; i--) {
            if(position &gt; count || position &gt; MAX_ITEMS) return;
            if(items[position] == items[count]){
                count++;
                add(item);
                items[i].data = items[i+1].data;
            }
            items[position].data = item;
        }
    }

    public T get(int position) {
        if(position &lt; 0 || position &gt;= count) { 
            throw new RuntimeException("Index out of Bounds. ");
        }
        return items[position].data;
    }


    public boolean set(int position, T item) {
        if(position &gt; count || position &gt; MAX_ITEMS) return false;
        items[position].data = item;
        return true;
    }

//METHOD THAT IS GIVING ME AN ISSUE
    public boolean remove(int position) {
        if(isEmpty() || position &gt; count || position &gt; MAX_ITEMS) return false;
        for(int i = count-1; i &lt; position; i--) {
            if(items[i] == items[position]) {
                items[i].data = items[i-1].data;
            }
            items[i] = items[position];
        }
        count--;
        return true;
    }

    public boolean isFull() {
        if(count &gt;= MAX_ITEMS) return true;
        return false;
    }

    public boolean isEmpty() {
        if(count == 0) return true;
        return false;
    }

    //Prints my List
    public void printAll() {
        for(int i = 0; i &lt; count-1; i++) {
            System.out.println(items[i].toString());
        }
    }

    //Counts number of objects in list
    public int size() {
        return count;
    }
}
</code></pre>

<p>Output that is expected is specified in the print statement above my reprinted list... the output i get is removed at the last index, not at specified position. </p>

<pre><code>OUTPUT:
The list is as follows: 
[1.0x2.0x3.0]
[2.0x3.0x4.0]
[3.0x4.0x5.0]
[4.0x5.0x6.0]
[5.0x6.0x7.0]
[6.0x7.0x8.0]
[7.0x8.0x9.0]
[8.0x9.0x10.0]
[9.0x10.0x11.0]
[10.0x11.0x12.0]

Size of my list is 11

Attempting to remove item at location 0.
The current list is as follows: 
[1.0x2.0x3.0]
[2.0x3.0x4.0]
[3.0x4.0x5.0]
[4.0x5.0x6.0]
[5.0x6.0x7.0]
[6.0x7.0x8.0]
[7.0x8.0x9.0]
[8.0x9.0x10.0]
[9.0x10.0x11.0]

Size of my list is 10

Attempting to remove item at location 5.
The current list is as follows: 
[1.0x2.0x3.0]
[2.0x3.0x4.0]
[3.0x4.0x5.0]
[4.0x5.0x6.0]
[5.0x6.0x7.0]
[6.0x7.0x8.0]
[7.0x8.0x9.0]
[8.0x9.0x10.0]

Size of my list is 9

Attempting to insert a cube 100*200*300 at location 9.
The current list is as follows: 
[1.0x2.0x3.0]
[2.0x3.0x4.0]
[3.0x4.0x5.0]
[4.0x5.0x6.0]
[5.0x6.0x7.0]
[6.0x7.0x8.0]
[7.0x8.0x9.0]
[8.0x9.0x10.0]
[10.0x11.0x12.0]
[100.0x200.0x300.0]

Size of my list is 11

Attempting to insert a cube 100*200*300 at location 3.
The current list is as follows: 
[1.0x2.0x3.0]
[2.0x3.0x4.0]
[3.0x4.0x5.0]
[100.0x200.0x300.0]
[5.0x6.0x7.0]
[6.0x7.0x8.0]
[7.0x8.0x9.0]
[8.0x9.0x10.0]
[10.0x11.0x12.0]
[100.0x200.0x300.0]

Size of my list is 11

Attempting to set the value at location 5 to a cube 10*11.2*20.9.
The current list is as follows: 
[1.0x2.0x3.0]
[2.0x3.0x4.0]
[3.0x4.0x5.0]
[100.0x200.0x300.0]
[5.0x6.0x7.0]
[10.0x11.2x20.9]
[7.0x8.0x9.0]
[8.0x9.0x10.0]
[10.0x11.0x12.0]
[100.0x200.0x300.0]

The current size of the list is: 11
The value at position 3 is: [100.0x200.0x300.0]
</code></pre>