Этот вопрос очень похож на
Посмотрите на мой ответ на этот вопрос .
В основном это предлагает следующее:
class SortedArrayList<T> extends ArrayList<T> {
@SuppressWarnings("unchecked")
public void insertSorted(T value) {
add(value);
Comparable<T> cmp = (Comparable<T>) value;
for (int i = size()-1; i > 0 && cmp.compareTo(get(i-1)) < 0; i--) {
T tmp = get(i);
set(i, get(i-1));
set(i-1, tmp);
}
}
}
Примечание по первому требованию: « Количество элементов не ограничено. »:
Возможно, вы захотите ограничить это чем-то вроде «Количество элементов не должно быть меньше 2 31 -1 ...», так как в противном случае вы исключаете все опции, которые поддерживаются массивом Java. (Вы могли бы избежать произвольного числа элементов, используя, например, LinkedList, но я не вижу, как вы могли бы сделать быстрый поиск в этом.)