package tv.dyndns.kishibe.qmaclone.server.util; import java.util.Arrays; import java.util.List; import com.google.common.collect.Lists; public class IntArray { private static final int INITIAL_SIZE = 16; private int[] data = new int[INITIAL_SIZE]; private int last = 0; public synchronized void add(int element) { if (data.length == last) { data = Arrays.copyOf(data, data.length * 2); } data[last++] = element; } public synchronized int get(int index) { return data[index]; } public synchronized void set(int index, int element) { data[index] = element; } public synchronized int size() { return last; } public synchronized int back() { return data[last - 1]; } public synchronized void removeElementAndFillWithLastElement(int element) { for (int i = 0; i < last; ++i) { if (data[i] != element) { continue; } data[i] = back(); --last; } } public synchronized int[] data() { return Arrays.copyOf(data, last); } public synchronized boolean isEmpty() { return last == 0; } public List<Integer> asList() { List<Integer> list = Lists.newArrayList(); for (int element : data()) { list.add(element); } return list; } }