Implementation of a dynamic list-like array
This is an interesting concept, a size-limited "bucket" of not-guaranteed-order items. You are right that the add and remove are O(1) operations, but there are a number of concerns I have.... some of them are severe.


If someone adds a null value, you are broken in the iterator. You need to accommodate null, or throw an exception.
The get(int) and remove(int) methods are useless - how does the user know what int to use? The first item added is placed at index size - 1, and so on, so how does that work?


Then, there's a trick with Collections that have a generic type. The general concensus in Java is that you should pass the class definition in to the constructor. The standard Java collections can't do that for backward compatibility reasons, but, consider this:

public class BagArray&lt;T&gt; implements Iterable&lt;T&gt; {

    private final T[] mItems;
    public BagArray(Class&lt;T&gt; tClass, int size) {
        @SuppressWarnings("unchecked")
        mItems = (T[]) Array.newInstance(tClass, size);


Note two things there...


In Java, by convention, you declare arrays as T[] mItems, and not T mItems[]
The array now has the correct type, and there's only one place you need to cast the values, and that is in the array creation.


One last thing, in Java 8, a nice trick for creating an array populated with sequential numbers is:

int[] values = IntStream.range(startInclusive, endExclusive).toArray();