Во-первых, ваша ошибка cannot invoke (method) on array type Object[]
означает, что ваша переменная array_list
на самом деле является массивом Object
с, как ответил Джони.
Следующий код является методом stati c, который принимает дополнительный параметр ArrayList
. Это соответствует вашей переменной array_list
.
public static <E> List<E> removeSublist( E elt, ArrayList<E> aList) {
// first, count the number of occurrences of the element
int numOccurrences = Collections.frequency(aList, elt);
// remove all occurrences of elt from your list
aList.removeIf( currentElt -> currentElt.equals(elt));
// return a list with numOccurrences duplicates of elt
return Collections.nCopies(numOccurrences, elt);
}
Ваш подход l oop тоже будет работать, но более эффективно удалить все вхождения сразу, а затем вернуть список с соответствующим количеством дубликатов elt
. Если вы собираетесь использовать подход l oop, вам нужно поместить оператор return
вне l oop.
Чтобы сделать этот метод частью пользовательского подкласс ArrayList
, просто измените подпись обратно на то, что у вас было изначально. Но убедитесь, что array_list
на самом деле имеет тип ArrayList
.