Почему мой вызов ArrayList.remove (id) не работает?

Поскольку вы используете C ++ 11, лямбда-выражение является хорошим и чистым решением.

class blub {
    void test() {}
  public:
    std::thread spawn() {
      return std::thread( [this] { this->test(); } );
    }
};

, так как this-> может быть опущено, его можно сократить до:

std::thread( [this] { test(); } )

или просто

std::thread( [=] { test(); } )
13
задан zigdon 27 August 2010 в 09:49
поделиться

2 ответа

Полагаю, у вас проблемы с тот факт, что remove() перегружен как int, так и Object, а get() принимает только int. ]. Попробуйте удалить(toRemove.get(i).intValue()).

remove(Object) from AbstractCollection выполнит поиск по списку и удалит данный объект, которого там не будет, потому что вы отправляете ему Integer и список содержит только JCheckBox. Вы пытаетесь вызвать remove(int), но поскольку вы задаете ему Integer, вместо этого вызывается перегрузка Object. Преобразовывая Integer в int, вы избегаете этой проблемы

Кроме того, всегда ли можно быть уверенным, что идентификатор в toRemove всегда равен индексу? Если toRemove не находится в порядке от наибольшего к наименьшему, его не будет.

31
ответ дан 1 December 2019 в 19:58
поделиться

javax.swing.JCheckBox[...]?

Также попробуйте удалить элементы по значению Objects, как здесь: http://www.easywayserver.com/blog/java-remove-element-in-arraylist/

0
ответ дан 1 December 2019 в 19:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: