Удалить объект из arrayylist по значению свойства - PullRequest
0 голосов
/ 06 мая 2020

У меня следующая проблема:

У меня есть arrayylist под названием «список», который содержит объекты класса «SampleClass», у объектов есть свойство «name». Теперь я хотел бы удалить объект с определенным значением «name», не зная индекса.

Я пробовал следующее:

list.remove(SampleClass("Village"))

Итак, идея заключается в том, что экземпляр SampleClass, в котором имя свойства содержит "Village", будет удален из списка.

Он компилируется нормально, но не работает.

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Если вы хотите удалить все элементы с таким именем, вы можете использовать removeAll:

list.removeAll { it.name == "Village" }

Если вы хотите удалить только первый элемент с таким именем:

Если name - единственное свойство класса, вы должны просто сделать его data class, чтобы equals() основывалось на name. Затем вы можете использовать опубликованный вами код.

Если это не единственное свойство, вам нужно будет получить индекс в списке и удалить его таким образом:

list.removeAt(list.indexOfFirst { it.name == "Village" })
2 голосов
/ 06 мая 2020

В том виде, в каком он есть сейчас, вам нужно будет переопределить метод equals в SampleClass, чтобы проверить, совпадает ли свойство name. Прямо сейчас это, вероятно, не работает, потому что метод equals по умолчанию не будет сравнивать свойство name, и поэтому экземпляр SampleClass, который вы хотите удалить, с этим свойством как «деревня», будет считаться не равным Экземпляр SampleClass, который вы передаете.

В противном случае вы также можете использовать list.filter { it.name != "village" }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...