PDA

View Full Version : [JAVA]Trovare in una lista parole che iniziano per...


ermasto
01-04-2011, 16:29
Ciao a tutti,
sto sviluppando un'applicazione in jade e ho un problema su una lista.
In pratica io ho una lista di nomi di agenti e vorrei stampare solo gli agenti che iniziano con un determinato nome. Come posso fare?

Ad esempio la lista contiene:

AgentServer@localhost
AgentServer - Clone1@locahost
ams@localhost
df@localhost

Mi servirebbe stampare solo gli agenti che iniziano per AgentServer.

Grazie mille

Gin&&Tonic
01-04-2011, 16:54
Ma la tua lista è una "LinkedList<String>" ?

Se è cosi trasformi ogni stringa in un array di char , e controlli se iniziano con la tua parola.

ermasto
01-04-2011, 17:02
Veramente jade usa una list normale, io poi me li porto in un vector:

listaagenticcontcarico = (List) results.getItems();
for(int i=0;i<listaagenticcontcarico.size();i++){
vlistaagenticcontcarico.add(listaagenticcontcarico.get(i));
}

WarDuck
01-04-2011, 17:40
Fai una scansione della lista con un ciclo for e usi la funzione String.startsWith():

http://download.oracle.com/javase/6/docs/api/java/lang/String.html#startsWith(java.lang.String)

Non vedo perché convertire la lista in un vettore.

ermasto
02-04-2011, 15:51
Fai una scansione della lista con un ciclo for e usi la funzione String.startsWith():

http://download.oracle.com/javase/6/docs/api/java/lang/String.html#startsWith(java.lang.String)

Non vedo perché convertire la lista in un vettore.

Ciao allora ho provato a fare cosi:
listaagenticcontscarico = (List) result.getItems();
for(int i=0;i<listaagenticcontscarico.size();i++){
if(listaagenticcontscarico.toString().contains("AgentServer")){
vlistaagenticcontscarico.add(listaagenticcontscarico.get(i));
System.out.println(vlistaagenticcontscarico);
}
}

Ma purtroppo nel vettore vlistaagenti.. (sono costretto ad usarlo perche ho un'applicazione di terze parti che necessita il vettore) vengono inseriti sempre tutti gli agenti.
Dove sbaglio?

Grazie mille

WarDuck
02-04-2011, 16:55
Ciao allora ho provato a fare cosi:

listaagenticcontscarico = (List) result.getItems();
for(int i=0;i<listaagenticcontscarico.size();i++)
{
if(listaagenticcontscarico.toString().contains("AgentServer"))
{
vlistaagenticcontscarico.add(listaagenticcontscarico.get(i));
System.out.println(vlistaagenticcontscarico);
}
}

Ma purtroppo nel vettore vlistaagenti.. (sono costretto ad usarlo perche ho un'applicazione di terze parti che necessita il vettore) vengono inseriti sempre tutti gli agenti.
Dove sbaglio?

Grazie mille

La parte rossa in grassetto è sbagliata proprio concettualmente.

Ricapitolando:
- Hai una lista di stringhe
- Devi scorrerla una stringa per volta
- Per ognuna delle stringhe nella lista devi fare quel controllo

Ti do un altro consiglio: usa nomi di variabili più corte e leggibili.

Altra cosa, result.getItems() cosa ritorna? Se ritorna una lista non c'è bisogno di fare alcun cast.

clockover
03-04-2011, 00:57
Voglio dirti una cosa anche io... dopo che hai sistemato dove ti ha detto WarDuck, effettua il ciclo usando un iteratore... 2 operazioni di get per ogni ciclata rallenta un casino. Intanto però modifica il codice come ti è stato già detto