2015-08-13 2 views
5

Ich habe eine List<Student> und String firstName="George". Ich möchte Student-Objekt aus Liste mit "George" ohne Iterationsliste extrahieren. Ist es möglich?Fetch Schüler Objekt aus Liste <Student> mit passendem Namen ohne Iteration (Java)

Kann sein, wenn eine Methode Override erforderlich ist oder etwas, damit es funktioniert.

public Class Student { 
    private String firstName; 
    private String lastName; 
    private String class; 

    // getter, setter methods goes here.... 
} 

Bitte helfen Sie mir danke.

+3

Verwenden Sie eine 'Map'. Alles andere ist eine Form der Iteration auf die eine oder andere Art. – MadProgrammer

+1

hast du irgendwas probiert? –

+1

mögliches Duplikat von [Java List.contains (Objekt mit Feldwert gleich x)] (http://stackoverflow.com/questions/18852059/java-list-containsobject-with-field-value-equal-to-x) – Abhishek

Antwort

0

Sie haben die gleiche() -Methode außer Kraft setzen kann dann mit Vorname ein Studenten Objekt erstellen = „George“ Wenn Sie das tun Sie können die Methode list.indexOf (Student_object) verwenden, um die Position dieses Objekts zu ermitteln, und Sie können list.get (index) verwenden, um das Student-Objekt in der Liste zu erhalten

+1

Aber Sie können nicht 'list.indexOf (" George ")' und intern, es ist immer noch eine Form der Iteration – MadProgrammer

+0

ich meine neues Objekt Student und SetFirstname ist "George" zu erstellen. Und damit, zumindest müssen wir nicht Schleife –

+0

Ich weiß, was du meinst, aber ich bin vernünftig sicher, es ist nicht das, was das OP intern sucht, es ist immer noch eine Iteration einer Art. Eine 'Map' wäre die einzige Lösung, die keine Iteration auf einer Ebene der anderen erfordert, sondern einfach gesagt;) – MadProgrammer

0

Nein, Sie müssen iterieren .. So ist die Liste. Wenn Sie in O (1) suchen wollen, benötigen Sie eine Karte.

0

Wenn Sie mit Java 8 dann seine mögliche Verwendung von Strom und Lambda: -

List<Student> myStudent = studentsList.stream() 
             .filter(s -> s.name.equals("George")) 
             .collect(Collectors.toList()); 
+1

Technisch ist es immer noch eine Form der Iteration – MadProgrammer

+0

@MadProgrammer Ja, es ist ... –

+0

Wenn wir eine Liste haben gibt es keine andere Möglichkeit, als ein bestimmtes Objekt zu iterieren. Was wir am besten tun können, ist, Ihre Suche effizient zu machen. –

0

Sie sollten eine Hash-Map anstelle von List verwenden und fügen Sie den Schülernamen als Schlüssel für das Objekt hinzu. HashMap = neue HashMap;

Verwandte Themen