|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2006
Città: Salerno
Messaggi: 238
|
[java] confronto tra array di stringhe
Ho 2 vettori di stringhe di cui uno è un sottinsieme dell'altro.
Esiste un metodo che mi ritorni un terzo array contenente le stringhe che sono in quello con + più stringhe ma nn nell'altro?? grazie. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Ma puoi certamente fartelo tu, non è affatto difficile. EDIT: ti dò anche un aiuto, se questa elaborazione la fai passando attraverso una collection (es. LinkedList) fai tutto in 6 righe di codice pulite pulite senza fare neanche 1 loop.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 10-09-2007 alle 10:04. |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jun 2006
Città: Salerno
Messaggi: 238
|
me ne sono uscito in 5 righe ma con 2 loop:
1. nel primo sostituisco nell'array + grande un carattere "x" al posto degli elementi in comune; 2. nel secondo mi costruisco un array scartando dall'ultimo gli elementi uguali a "x". ieri ho messo un altro thread, nn so se l'hai letto, mica sai se si può creare il diagramma UML di un progetto direttamente in JBuilder?? grazie e alla prossima, Antonio |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Si potrebbe fare (come avevo detto prima) usando solamente le collezioni: Codice:
public static String[] arrayAMinusB (String[] a, String[] b)
{
LinkedList<String> list1 = new LinkedList<String> ();
LinkedList<String> list2 = new LinkedList<String> ();
Collections.addAll (list1, a);
Collections.addAll (list2, b);
list1.removeAll (list2);
return list1.toArray (new String[list1.size()]);
}
Se si volesse farlo senza usare in alcun modo le collezioni, si potrebbe fare così: Codice:
public static String[] arrayAMinusB (String[] a, String[] b)
{
String[] v = a.clone ();
int n = 0;
main:
for (int i = 0; i < v.length; i++)
{
for (int j = 0; j < b.length; j++)
if (v[i] == b[j])
continue main;
v[n++] = v[i];
}
String[] r = new String[n];
System.arraycopy (v, 0, r, 0, n);
return r;
}
Codice:
public static String[] arrayAMinusB (String[] a, String[] b)
{
LinkedList<String> list = new LinkedList<String> ();
main:
for (int i = 0; i < a.length; i++)
{
for (int j = 0; j < b.length; j++)
if (a[i] == b[j])
continue main;
list.add (a[i]);
}
return list.toArray (new String[list.size()]);
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
anche perchè se poi nell'array c'è già una stringa contenente solo "x" non funziona più niente!
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jun 2006
Città: Salerno
Messaggi: 238
|
caro andbin,
ti confermi maestro. grazie |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jun 2006
Città: Salerno
Messaggi: 238
|
(da cancellare)
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:30.



















