Newsgroup: it.comp.java
Titolo: classe String

ciao a tutti!sto imparando da poco a "programmare" in java.......mi
servirebbe sapere come si fa a comparare una variabile String str ad un
array di String[] array....
es:  String str;
      String[] array=new String[4];
      array[0]="aa";
      array[1]="bb";
      array[2]="cc";
      array[3]="dd";
//a questo punto mi servirebbe fare:
      if str.equals(array[])
      istruzionefaiqualcosa();//ma giustamente la VM vuole che gli
indichi la posizione nell'array a cui faccio riferimento,ma a me
servirebbe che sia soddisfatta la condizione per cui la variabile
str(che faccio inserire tramite InputStream...) sia una qualsiasi fra
tutte le posizioni dell'array e non una in
particolare.Aiutatemi!!!...grazie.

 particolare.Aiutatemi!!!...grazie.
Fai passare tutte le stringhe dell'array, appena una e' uguale alla 
stringa inserita, setta la variabile e interrompi il ciclo:
   boolean uguali = false;
   for (int i = 0; i < array.length; i++) {
     if (array[i].equals(str)) {
       uguali = true;
       break;
     }
   }
Precondizioni: Array non e' null e nessuna delle stringhe in esso 
contenuta e' null.
Dato che la stringa viene inserita tramite InputStream, magari vuoi pure 
eliminare eventuali spazi inseriti dall'utente prima o dopo essa usando 
il metodo "trim()".
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

"Don't-Call-Me-White!"

Io farei un ciclo che confronta il tuo campione con tutti gli elementi 
dell'array.
Poi magari esiste una maniera piů elegante e allora sarei felicissimo di 
impararla :)
--
Noisemaker
"Dove il tempo non č che una curva, un filo sciolto del tessuto universale, 
un tessitore potrebbe creare un fatale nodo, e gettare nel caos la sorte dei 
pianeti" 



import java.util.HashSet
....
HashSet<String> lista=new HashSet<String>();
lista.add("aa");
lista.add("bb");
lista.add("cc");
lista.add("dd");
if (lista.contains(str)) istruzionefailqualcosa();
....
et voilà!
-- 
Fermiamo scientology prima che sia troppo tardi!!!
http://xenu.com-it.net
 - 
http://xenu.freewinds.cx/
 - 
http://www.xenu.net/
(per rispondere personalmente leva IlDitoDalCulo)

 import java.util.HashSet
Un po overkill, no ?
Tra l'altro mi pare che si possa fare qualcosa come:
   if (new HashSet(Arrays.asList(arrayDiStringhe)).contains(str)) {
     ...


    }
beh se lo puņ gestire un po' come vuole :) alla fine il mio intento era
portare alla luce "contains"... Grazie per avermi ricordato di Arrays!
Tra l'altro se non ricordo male c'č un altro metodo di Arrays che permette
di fare la verifica senza passare da HashSet:
if (Arrays.binarySearch(Arrays.sort(arrayDiStringhe),str)>=0) {
   ...
}
... :D


 }
Sarrebbe interressante indagare se e' piu' veloce ordinare un array e 
poi procedere al binary search o se e' piu' veloce istanziare un 
hashSet, popolarlo e poi andare a pigliare l'elemento giusto ...
Se qualcuno si vuole fare avanti :) ... Io punto sulla tua soluzione 
come la piu' veloce :)


 come la piu' veloce :)
Fra le due č sicuramente *molto* piů veloce... la terza,
o meglio la prima, cioč quella di scandire tutto l'array
con un ciclo for fino a quando non si  trova l'elemento
corrispondente (che - tra l'altro - mi par piů semplice).
:)