2017-05-31 2 views
1

ich mit einer Liste von Inhalten in sie ein Objekt, und das andere Objekt mit Inhalt in es ohne die Liste wie der Code untervergleichen das Objekt mit einer Liste von Inhalten auf ein anderes Objekt

List<LoginInformation> allUsersLoginInfo 
LoginInformation loginInformation 

Jetzt möchte ich um diese beiden zu vergleichen und zu prüfen, ob die Elemente von loginInformation in allUsersLoginInfo vorhanden sind

LoginInformation ist eine Modellklasse.

Es hat Name und Rollnummer.

Also, allUserLoginInfo ist eine Liste, die mehrere Werte für Name und Rollnummer enthält.

Jetzt möchte ich vergleichen und sehen, ob irgendein Wert von loginInformation (d. H. Entweder der Wert von Name oder RollNumber) in allUserLoginInfo dann gibt mir wahr sonst falsch, dass keine Werte gleich sind.

Vielen Dank im Voraus

+0

siehe https://stackoverflow.com/questions/13051568/making-your-own-class-comparable –

+0

_Now ich will t o Vergleichen Sie diese beiden und sehen Sie, ob die Elemente von loginInformation in allUsersLoginInfo_ existieren, was bestimmt, dass zwei oder mehr Objekte gleich sind? –

+0

@ Aominè Ich habe die Frage bearbeitet, um weitere Informationen zu geben – Vamsi

Antwort

0

Sie können Stream#anyMatch verwenden, um die vorliegende Aufgabe zu erfüllen.

if(allUsersLoginInfo.stream().anyMatch(m -> m.getName().equals(loginInformation.getName()) 
        || m.getRollNumber() == loginInformation.getRollNumber())){ 
     //exists 
}else{ 
     // does not exist 
} 
+0

Hallo, ich habe diese Lösung versucht, aber ArrayOutOfBounds Exception bekommen. Finden Sie den Teil der Stack-Trace. java.lang.IndexOutOfBoundsException: Index: 11, Größe: 1 \t java.util.ArrayList.rangeCheck (ArrayList.java:653) \t java.util.ArrayList.get (ArrayList.java:429) – Vamsi

+0

der Fehler ist nicht von dem Code, den ich gepostet habe ... muss irgendwo anders in Ihrem Code sein. Wie Sie aus dem Code klar erkennen können, indexiere ich nichts. –

+0

Mein schlechtes. Ich habe es und repariere es. Danke für die Antwort. Es hat für mich funktioniert – Vamsi

0

Sie könnten tun:

allUsersLoginInfo.contains(loginInformation); 

aber Sie müssen richtig die Methode equals in der Klasse LoginInformation, wenn nicht, wird die Liste nie das Element finden und außer Kraft zu setzen return false ...

0
lUsersLoginInfo.contains(loginInformation) 

Könnte sein, was Sie für gesuchte Wenn es eine Menge ist info in der Liste würde ich stattdessen ein Set verwenden. Aber Sie speichern die Passwörter in den Benutzerinformationen besser nicht ...

0

Sie vor Apache Commons für Java verwenden konnte auf 1,8

Dieses Beispiel finden, wenn jeder Wert von loginInformation (dh entweder der Wert des Namens oder RollNumber) in allUserLoginInfo präsentiert:

LoginInformation res = CollectionUtils.find(allUsersLoginInfo, new Predicate<LoginInformation >() { 
     @Override 
     public boolean evaluate(LoginInformation o) { 
      return o.getName().equals(yourloginInformation.getName()) || o.getRollnumber() == yourloginInformation.getRollnumber(); 
     } 
    }); 

Für Java 1.8 verwenden Aominè Antwort

Verwandte Themen