Коллекции и списки в Java. Использование типизированного и неипизированного итератора
Дано 3 класса:
База данных о кино - содержит список фильмов и актеров.
Фильм - список актеров, которые в нем играют.
Актер - список фильмов в которых играл.
Необходимо:
- (сделано) Найти актера, который не играл ни в одном фильме, используя типизированный итератор.
- Составить список актеров, с которыми в одном фильме играл данный актер. - тизированный цикл for-each.
- Найти фильм с наибольшим количеством актеров. - нетипизированный итератор.
Main.java:
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
Film film1 = new Film("Harry Potter");
Film film2 = new Film("Split");
Film film3 = new Film("Victor Frankenstein");
Actor actor1 = new Actor("Daniel Redcliff");
Actor actor2 = new Actor("Emma Watson");
Actor actor3 = new Actor("James McAvoy");
Actor actor4 = new Actor("BattleField Overwatch");
Database.addFilm(film1);
Database.addFilm(film2);
Database.addFilm(film3);
Database.addActor(actor1);
Database.addActor(actor2);
Database.addActor(actor3);
Database.addActor(actor4);
film1.addActor(actor1);
film1.addActor(actor2);
film2.addActor(actor3);
film3.addActor(actor1);
film3.addActor(actor3);
actor1.addFilm(film1);
actor1.addFilm(film3);
actor2.addFilm(film1);
actor3.addFilm(film2);
actor3.addFilm(film3);
}
// first task realization
private static List<Actor> notFilmed() {
List<Actor> resultList = new ArrayList<>();
Iterator<Actor> actorIterator = Database.getActors().iterator();
while (actorIterator.hasNext()) {
Actor actor = actorIterator.next();
Iterator<Film> filmIterator = Database.getFilms().iterator();
boolean present = false;
while (filmIterator.hasNext()) {
Film film = filmIterator.next();
if (film.getActors().contains(actor)) {
present = true;
break;
}
}
if (!present) {
//System.out.println("actor: " + actor.getName());
resultList.add(actor);
}
}
return resultList;
}
}
Database.java
import java.util.ArrayList;
import java.util.List;
public class Database {
private static List<Film> allfilms = new ArrayList();
public static void addFilm(Film film) {
allfilms.add(film);
}
private static List<Actor> allactors = new ArrayList();
public static void addActor(Actor actor) {
allactors.add(actor);
}
public static List<Actor> getActors(){
return allactors;
}
public static List<Film> getFilms(){
return allfilms;
}
}
Film.java:
import java.util.ArrayList;
import java.util.List;
class Film{
private String name;
private List<Actor> actors = new ArrayList();
public Film(String name) {
this.name = name;
}
public void addActor(Actor actor) {
this.actors.add(actor);
}
public List<Actor> getActors(){
return this.actors;
}
public String getName() {
return this.name;
}
}
Actor.java:
import java.util.ArrayList;
import java.util.List;
class Actor{
private String name;
private List<Film> films = new ArrayList();
public Actor(String name) {
this.name = name;
}
public void addFilm(Film film) {
this.films.add(film);
}
public List<Film> getFilms(){
return this.films;
}
public String getName() {
return this.name;
}
}