Удаление элементов с несколькими аргументами из ArrayList - PullRequest
0 голосов
/ 08 мая 2019

Я хочу удалить экземпляр ArrayList, но с кодом, который у меня есть, он выводит список удаленных фильмов. У меня есть ArrayList, который принимает title, year, genre и balance. Цель состоит в том, чтобы удалить из списка только заголовок и год.

Я пробовал цикл for-each, но это приводит к ошибке ConcurrentModificationException, и я не уверен, как использовать итераторы для его работы в этом примере.

Предполагается удалить экземпляр, указанный в заголовке и году, чтобы при выводе списка moviesAvailable список обновлялся. Однако при перечислении он показывает все фильмы (возможно, потому что он фактически не удаляет фильм).

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Одним из способов удаления целевого фильма является метод Collections.removeIf():

public void removeMovie() {
    System.out.println("\nRemoving a movie.");
    System.out.print("Enter the title of the movie: ");
    String title = In.nextLine();
    System.out.print("Enter the year: ");
    int year = In.nextInt();
    moviesAvailable.removeIf(movie -> movie.hasType(title, year));
    // other stuff...
}

Примечание

  • Метод removeIf перебирает вашу коллекцию и возвращает ее имя, удаляя элемент (в данном случае фильм), который удовлетворяет условию.
  • Если ваша запись не была удалена, проверьте, правильны ли значения title и year. Например, содержит ли title завершающую новую строку?
0 голосов
/ 08 мая 2019

вы можете сделать что-то вроде

 moviesAvailable.removeIf(m -> m.hasType("s",2));
...