Entra

View Full Version : [java] salvare stringhe più lunghe da una collection


nayma
22-10-2007, 17:07
Ciao a tutti!
Domanda che potrebbe sembrare banale, ma dopo tutto il giorno che sono al pc il cervello comincia a fondersi e gli occhi a incrociarsi..

Dunque, vengo al mio problema: ho una collection di stringhe, ma devo restituire solo le 3 più lunghe, come fare?? :confused:
es:
da [ccc,dddd,bb,eeeee,a] devo restituire solo [ccc,dddd,eeeee]

Al momento mi vengono in mente solo metodi incasinatissimi, ma dovrebbe esserci una qualche soluzione più facile..

Rispondete,please!!! :cry:

PGI-Bis
22-10-2007, 17:29
Pensa facile.

1. crei una copia della collezione in un ArrayList
2. ordini l'ArrayList usando la lunghezza come termine di paragone (creando un Comparator<String> e usando Collections.sort)
3. restituisci le prime tre stringhe dell'ArrayList (se l'ordine è dalla stringa più lunga alla stringa più corta)

nayma
23-10-2007, 09:30
qualche pezzo di codice?? :bimbo:

^TiGeRShArK^
23-10-2007, 09:53
La prima cosa che mi viene in mente è di fare così:

Collection<String> longStrings = new ArrayList<String> ();
for (int i = 0; i < 3; i++) {
String string = Collection.max(strings) //dove strings è la collezione di stringhe da cui estrarre le + lunghe
strings.remove(string);
longStrings.add(string);
}

non l'ho provato, però in teoria dovrebbe funzionare dato che le stringa + lunga avrà il valore max.
Altrimenti usando la tecnica di pgi dovresti avere qualcosa del genere:

Collection<String> longStrings = new ArrayList<String> ();
Collections.sort(strings);
for (int i = 0; i < 3; i++) {
string = strings.get(strings.size() - i);
longStrings.add(string);
}

sinceramente però mi pare + elegante (e + performante) la tecnica di pgi :p