2015-08-13 5 views
5

I have a List<Student> e String firstName="George". Voglio estrarre l'oggetto Studente dalla lista che corrisponde a "George" senza lista iterativa. È possibile?Recupera oggetto studente dall'elenco <Student> con nome corrispondente senza iterazione (Java)

Può essere se qualche metodo ha la precedenza su richiesta o altro per farlo funzionare.

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

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

Please help me, grazie.

+3

Utilizzare una 'Mappa'. Qualcos'altro è una forma di iterazione in un modo o nell'altro – MadProgrammer

+1

hai provato qualcosa? –

+1

possibile duplicato di [Java List.contains (oggetto con valore di campo uguale a x)] (http://stackoverflow.com/questions/18852059/java-list-taintainsobject-with-field-value-equal-to-x) – Abhishek

risposta

0

è possibile ignorare il metodo uguale() Quindi creare un oggetto Student con Nome = "George" Quando si esegue è possibile utilizzare il metodo list.indexOf (Student_object) per scoprire la posizione di tale oggetto ed è possibile utilizzare list.get (index) per ottenere l'oggetto Student nell'elenco

+1

Ma non puoi usare 'list.indexOf (" George ")' e internamente, è ancora una forma di iterazione – MadProgrammer

+0

Voglio dire creare un nuovo oggetto Student e setFirstname è "George". E con questo, almeno non dobbiamo usare il ciclo –

+0

So cosa intendi, ma sono certo che non è quello che l'OP sta cercando internamente, sta ancora usando un'iterazione di qualche tipo. Una 'Mappa 'sarebbe l'unica soluzione che non richiedesse alcuna forma di iterazione a un livello di un altro, solo dicendo;) – MadProgrammer

0

No devi iterare .. Ecco come è la lista. se vuoi che il recupero avvenga in O (1) allora hai bisogno di una mappa.

0

Se si utilizza Java 8 allora il suo possibile utilizzando Stream e Lambda: -

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

Tecnicamente, è ancora una forma di iterazione – MadProgrammer

+0

@MadProgrammer Sì, è ... –

+0

Se abbiamo una lista non c'è altro modo che iterare per cercare un oggetto particolare. La cosa migliore che possiamo fare è rendere la tua ricerca efficiente. –

0

È necessario utilizzare la mappa hash anziché l'elenco e aggiungi il nome dello studente come chiave con oggetto. HashMap = new HashMap;