2012-04-18 11 views
28

Come è possibile verificare se uno String è presente nello List?Verificare se una stringa si trova in una ArrayList di stringhe

Desidero assegnare 1 a temp se c'è un risultato, 2 in caso contrario.

mio codice attuale è:

Integer temp = 0; 
List<String> bankAccNos = new ArrayList<String>();//assume list contains values 
String bankAccNo = "abc"; 
for(String no : bankAccNos) 
    if(no.equals(bankAccNo)) 
     temp = 1; 
+0

Perché non basta impostare temperatura per essere 2 agli inizi? E perché usare l'intero oggetto invece di int? La soluzione sembra abbastanza buona se si cambia ciò che ho detto – tskulbru

+0

Quello che hai già scritto è una soluzione funzionante, tranne che ti manca la dichiarazione else. Si noti inoltre che il confronto delle stringhe fa distinzione tra maiuscole e minuscole e potrebbe essere un problema se non si riuscisse a farlo funzionare correttamente. Inoltre, l'utilizzo di contiene come suggerito è un altro approccio valido –

+0

@JimmyGustafsson: sì, l'uomo lo stavo facendo solo ma mi sono confuso ... comunque grazie – abhi

risposta

44
temp = bankAccNos.contains(no) ? 1 : 2; 
+0

Il metodo 'List.contains()' verifica l'identità, non l'uguaglianza. Funziona bene per interi ma non per stringhe (che è ciò che l'OP chiedeva). L'iterazione sulla lista, o meglio, utilizzando Java8 List stream è la strada da seguire per 'List ' – Michal

+4

@Michal la documentazione indica altrimenti https://docs.oracle.com/javase/8/docs/api/java/util /List.html#contains-java.lang.Object- Controlla l'uguaglianza, non l'identità: "restituisce true se e solo se questo elenco contiene almeno un elemento e tale che' (o == null? E == null: o.equals (e)) "" – jazzytomato

+0

Hai ragione. Grazie per avermi corretto. – Michal

12

L'interfaccia List già ha risolto questo.

int temp = 2; 
if(bankAccNos.contains(bakAccNo)) temp=1; 

più può essere trovato nella documentazione su List.

+0

Il metodo 'List.contains()' verifica l'identità, non l'uguaglianza. Funziona bene per interi ma non per stringhe (che è ciò che l'OP chiedeva). L'iterazione sulla lista, o meglio, utilizzando Java8 List stream è la strada da seguire per 'List ' – Michal

+0

@Michal Non vero come la documentazione dice diversamente (e ho appena testato). Colpisca il collegamento nella mia risposta e legga per lei. –

0
List list1 = new ArrayList(); 
    list1.add("one"); 
    list1.add("three"); 
    list1.add("four"); 

    List list2 = new ArrayList(); 
    list2.add("one"); 
    list2.add("two"); 
    list2.add("three"); 
    list2.add("four"); 
    list2.add("five"); 


    list2.stream().filter(x -> !list1.contains(x)).forEach(x -> System.out.println(x)); 

L'output è:

two 
five 
Problemi correlati