Я использую Java 6 Collecetions API.Мне нужна коллекция, которая должна иметь только N элементов.Я имею в виду, что если я добавляю новый элемент и коллекция уже имеет N элементов, то последний элемент должен быть удален, а новый добавлен в начало коллекции.У меня есть следующий фрагмент кода, чтобы сделать это:
class A {
int N = 100;
Deque dq = new LinkedList();
void add(Object o) {
synchronized (o) {
if (dq.size() == N) {
dq.pollLast();
}
dq.add(o);
}
}
Deque getDq() {
return new LinkedList(dq);
}
}
Объект с типом A может быть доступен многим пользователям одновременно, чтобы добавить новый элемент.На практике я получил NullPointerException с ним:
Caused by: java.lang.NullPointerException
at java.util.LinkedList.remove(LinkedList.java:790)
at java.util.LinkedList.removeLast(LinkedList.java:144)
at java.util.LinkedList.pollLast(LinkedList.java:573)
at A.add(A.java:9)
Контракт Deque.pollLast () ничего не говорит о NullPointerException:
Извлекает и удаляет последний элемент этого спискаили возвращает ноль, если этот список пуст.
Также добавляется синхронизация добавления элементов.
Кто-нибудь знает, что может быть причиной исключения?
Спасибо залюбые идеи