2013-02-13 17 views
29

Ho una matrice denominata "bob" che contiene valori.Android - Verificare se esiste un valore in una matrice

String[] bob = { "this", "is", "a", "really", "silly", "list" }; 

Come posso sapere se il valore "sciocco" esiste nell'array denominato bob senza scorrere tra di esso?

+0

E 'importante capire quando si sta imparando lo sviluppo Android per la prima volta, che la tua domanda potrebbe essere solo una domanda Java, che non è specifica per Android. Qual è il caso qui :) – Richard

risposta

89

È possibile utilizzare il metodo List#contains. Per questo è necessario convertire la matrice in un elenco. È possibile utilizzare il metodo Arrays#asList() UFT che:

String[] bob = { "this", "is", "a", "really", "silly", "list" }; 

if (Arrays.asList(bob).contains("silly")) { 
    // true 
} 
+2

In questo caso, puoi cambiare 'Arrays.asList (bob)' in 'Collections.singletonList (bob)' = meno utilizzo della memoria. –

5

Converte l'array in elenco utilizzando statica Arrays.asList(T) e verificare con List.contains(Object) per verificare se un oggetto esiste nella collezione riaccordata.

String[] bob = { "this", "is", "a", "really", "silly", "list" }; 
      System.out.println(Arrays.asList(bob).contains("silly")); 

modo tradizionale tuttavia sarebbe per scorrere l'array e controllare in ogni elemento utilizzando equals().

3

Se avete intenzione di controllare un sacco può risultare più efficiente per utilizzare un HashSet:

String[] bob = { "this", "is", "a", "really", "silly", "list" }; 
Set<String> silly = new HashSet<String>(Arrays.asList(bob)); 
boolean isSilly = silly.contains("silly"); 
2

Ecco un modo semplice per farlo:

ArrayList list = new ArrayList(Arrays.asList(bob)); 
    if (list.contains("silly")) { 
        // my array has silly ! 
      } 

L'idea è per convertire la matrice in un oggetto ListArray. ma consumerebbe memoria extra, quindi assicurati che ne valga la pena prima di usarlo.

Modifica

Se siete dopo peformance e il salvataggio della memoria è possibile utilizzare binari algorthem di ricerca invece: in questo modo non c'è bisogno di allocare nuovi oggetti:

Arrays.sort(array) 
int value = Arrays.binarySearch(array, "silly"); 
if (value != -1) { 
// my array has silly ! 
} 
+0

Se cerco "silly1" mi sta dando un risultato errato ... Dice che esiste – user2065795

+0

Arrays.binarySearch usa lo stesso metodo di confronto che è usato in list.contais .... object.equals (..) quindi per favore certo il tuo test è accurato ... –

Problemi correlati