Просто реализуй свой. Вы можете использовать прокси-подход. Определите свой собственный список, который поддерживается ArrayList
. Сделайте внутренний список закрытым. Также реализуйте простое поле limit
, которое имеет значение по умолчанию и также может быть установлено с помощью конструктора.
Ваш список будет реализовывать List
, и для каждого метода, который изменяет внутренний список, увеличивает и уменьшает счетчик соответствующим образом. Если размер превышает лимит, выведите какое-то исключение. Что-то вроде
public class FixedList implements List {
private ArrayList<E> list = new ArrayList<E>();
private int limit = 10; // default
FixedList(){} // default constructor
FixedList(int limit) {
this.limit = limit;
}
public boolean add(E object) {
if (this.list.size() == limit - 1) {
// throw some sort of LimitExceeded Runtime Exception
}
this.list.add(object);
}
...
}
Вам придется поработать над дженериками, и не забывайте поддерживать случаи, когда несколько вещей добавляются одновременно addAll
.