Я не могу использовать метод remove (int), символ не найден.

Я пытаюсь сделать метод, removeAnObject, который удаляет объект из массива и возвращает логическое значение, но я сталкиваюсь с странным symbol not found при попытке использовать метод remove из класса Arraylist.

Вот способ:

public boolean removeAnObject(Element anObject)
 {
 int whereWeAre;
 String paramClass;
 String currClass;
 boolean weFoundIt;

 paramClass = anObject.getClassName();
 whereWeAre = 0;
 weFoundIt = false;


 while(whereWeAre != currentSize && weFoundIt == false)
 {
 currClass = theList[whereWeAre].getClassName();
 if(currClass.equals(paramClass))
 {
 theList.remove(whereWeAre);
 weFoundIt = true;
 }

 else
 {
 whereWeAre++;
 }

 }

 return weFoundIt;

 }

Вот ошибка:

ElementSet.java:262: error: cannot find symbol
 theList.remove(theList[whereWeAre]);
 ^
 symbol: method remove(Element)
 location: variable theList of type Element[]
1 error

Заключительное примечание: у меня есть import java.util.ArrayList в начале класса.

2 ответа

Если вы используете массив, вы заменяете:

theList.remove(whereWeAre);

с

theList[whereWeAre] = null;

Эта строка сделает место whereWeAre пустым, таким образом удалив искомый Element.

Не забудьте добавить условие проверки нуля, если вы намерены повторно использовать свой метод несколько раз в одном массиве. В противном случае вы столкнетесь с NullPointerException.

while(whereWeAre != currentSize && weFoundIt == false)
 {
 if (theList[whereWeAre]!=null)
 {
 currClass = theList[whereWeAre].getClassName();
 if(currClass.equals(paramClass))
 {
 theList.remove(whereWeAre);
 weFoundIt = true;
 }
 else
 {
 whereWeAre++;
 }
 }
 else
 {
 whereWeAre++;
 }
 }


Метод remove (parameter) с параметром int as для ArrayList также имеет возвращаемый тип E, являющийся объектом Object of Object, указанным при создании списка.

Поэтому для начинающих, когда вы используете theList [], я предполагаю, что это массив ArrayLists(), и вы уверены, что theList имеет тип ArrayList, а не массив.

1- Сохраните и перекомпилируйте свой код, строка ошибки не указана в указанном вами коде. 2- Убедитесь, что theList [whereWeAre] является int, если вы используете указанный выше метод.

3- Почему бы просто не использовать этот метод, включенный в класс ArrayList():

public boolean remove(Object o)

который удалит первое появление объекта и вернет true, если он будет успешным. Подробнее здесь: Документы

licensed under cc by-sa 3.0 with attribution.