private List<Actor> actors = new ArrayList<>();
public void addActors(Movie x)
{
if(actors.isEmpty())
{
actors.addAll(x.getListOfActors());
}
else
{
List<Actor> movieActors = x.getListOfActors();
ArrayList<Actor> tempActors= new ArrayList<Actor>();
for(int z = 0 ; z <actors.size(); z++)
{
for(int n = 0 ; n <movieActors.size();n++)
{
if(actors.get(z).getName().equals(movieActors.get(n).getName()))
actors.get(z).addCount(); // actor count
else
{
tempActors.add(movieActors.get(n));
}
}
}
actors.addAll(tempActors);
}
}
So each movie object have a list of actors. And each actor objects have a int count object which is initialized at 1. Everything I run addActors(Movie x), i want to check if there is any actors in movie x that is in List actors. if there is, i want to increment count by 1 else just add it to List actors. This is my current way of doing it, i realized its wrong but i dont know how to fix it. I run the method twice or more, repeated actors will be added to List actors because of actors.addAll(tempActors). Is there a better way to do this ?
update: So the problem isnt with the string comparing. Even if i use .equals, it isnt the result i want. sample test case:
movie: "frozen"
actors: Kristen Bell, Idina Menzel, Jonathan Groff, Josh Gad
movie: "the boss"
actors: Melissa McCarthy, Kristen Bell, Peter Dinklage, Ella Anderson
so if I use addActors(movie x) on these two movies, each actors should only appear once. In the List actors. And count for kristen bell should be at 2 now. everyone else is 1.(count is number of movies they are in)
however when i run this method with these two movies, my List actors now contains:
Kristen Bell Idina Menzel Jonathan Groff Josh Gad Melissa McCarthy Peter Dinklage Ella Anderson Melissa McCarthy Kristen Bell Peter Dinklage Ella Anderson Melissa McCarthy Kristen Bell Peter Dinklage Ella Anderson Melissa McCarthy Kristen Bell Peter Dinklage Ella Anderson
(sorry for long explanation, I don't know how else to explain this )