Я не совсем понимаю, что у вас внутри contains
... вы звоните toArray()
на Object
, у которого нет метода toArray()
.Это говорит о некотором фундаментальном недопонимании того, что вы пытаетесь сделать.Несмотря на это, вы действительно, похоже, знаете, как проверить, содержит ли коллекция данный объект, потому что вам нужно найти объект, чтобы remove
его найти.Ваш метод remove
возвращает точно такое же значение boolean
, которое contains
будет иметь при вызове с тем же объектом.Я думаю, что вы можете работать с этим.
(Ваш метод remove
имеет ошибку, которая может вызвать утечку памяти, кстати ... когда он перемещает объекты в массиве влево на 1,он не устанавливает для слота массива, который больше не входит в коллекцию, значение null
.)
addAll
довольно просто ... вам дано Collection
элементов, которые нужны всембыть добавленным, и у вас есть метод add
, который может добавить элемент.Они идут вместе.(addAll
- это все, что вам действительно нужно для реализации вашего второго конструктора.)
clear
также прост.После его вызова ваш массив не должен иметь ссылок на какие-либо объекты, а размер вашей сумки должен быть равен 0. Просто подумайте, как вы можете это сделать.
Работающая реализация iterator()
поможет вамМожно использовать несколько Collection
методов (включая clear
), используя Iterator
коллекции (это делает удобный абстрактный класс AbstractCollection
), но реализовать это немного сложнее, чем просто реализовать
Кроме того, небольшая заметка.
public boolean isEmpty() {
if(size()==0)
return true;
else
return false;
}
лучше написать в виде:
public boolean isEmpty() {
return size() == 0;
}
Так какsize() == 0
уже является выражением boolean
, if
/ else
является избыточным.