2016-04-03 12 views
0

Ich verstehe nicht, warum die folgende if-Anweisung nie trifft, ich habe durch das Protokoll überprüft, dass Film und films.get (i) .getTitle() die gleiche Zeichenfolge sind :Probleme mit der Iteration durch eine ArrayList (Java)

List<Film> films = new ArrayList<Film>(); 
films = filmDB.getAllFilms(); 



for(int i = 0; i < films.size(); i++) 

       if(movie == films.get(i).getTitle()) 
       { 
        Log.d("TITLEMOVIE", films.get(i).getTitle()); 
        ; 
       } 
      else 
       { 
        Log.d("NOMATIC", films.get(i).getTitle()); 
       } 
+0

Sie müssen die equals-Methode von String verwenden, um den Inhalt von Zeichenfolgen zu vergleichen. == testet, ob die beiden Referenzen entweder Null sind oder beide auf dasselbe Objekt zeigen. –

+0

Verwenden Sie gleich für String Vergleich –

+0

Ich nicht, wie ich es geschafft zu verpassen, dass ich .equals für zwei Saiten verwenden musste, danke! –

Antwort

0

== für alles andere als Primitive vergleicht die Speicheradressen der beiden Objekte. Verwenden Sie .equals, um Zeichenfolgen und andere Objekte zu vergleichen.

d.h.

String str1 = "bla"; 
// Use String::new to make sure 'str1' and 'str2' don't reference the same literal 
String str2 = new String("bla"); 

System.out.println(str1 == str1); // true 
System.out.println(str1 == str2); // false 
System.out.println(str1.equals(str2)); // true