miao84
31-05-2011, 12:24
Ho creato un "ciclo" che dati due arraylist controlla i primi tre elementi dell'array, degli arraylist iterati, e se questi sono uguali un terzo arraylist prende il risultato del secondo, altrimenti il risultato del primo. Naturalmente il primo arraylist è popolato con dimensione >= al secondo. In parole povere...
final List<List<?>> risultati1 = new ArrayList<List<?>>();
final List<List<?>> risultati2 = new ArrayList<List<?>>();
final List<List<?>> risultati_totali = new ArrayList<List<?>>();
.........
int i = 0;
int j = 0;
if (!risultati2.isEmpty()){
while (i<risultati1.size()){
while(j<risultati2.size()){
if (risultati1.get(i).get(0).equals(risultati2.get(j).get(0))&&risultati1.get(i).get(1).equals(risultati2.get(j).get(1))&&risultati1.get(i).get(2).equals(risultati2.get(j).get(2))){
//se i primi tre elementi sono uguali prendo risultati2
risultati_totali.add(risultati2.get(j));
i+=1;
j+=1;
}else{
//se no inserisco i risultati1 (risultati1 e risultati2 sono popolati in maniera ordinata rispetto ai 3 elementi controllati)
risultati_totali.add(risultati1.get(i));
i+=1;
}
}
//non ci sono piu elementi in risultati2
risultati_totali.add(risultati1.get(i));
i=i+1;
}
metodo(risultati_totali);
}else if (risultati2.isEmpty()){
//risultati2 è vuoto
metodo(risultati1);
}
Mi è stato chiesto di rifarlo in maniera "object oriented" (credo utilizzando meglio generics, mappe e quant'altro)...qualche suggerimento??
final List<List<?>> risultati1 = new ArrayList<List<?>>();
final List<List<?>> risultati2 = new ArrayList<List<?>>();
final List<List<?>> risultati_totali = new ArrayList<List<?>>();
.........
int i = 0;
int j = 0;
if (!risultati2.isEmpty()){
while (i<risultati1.size()){
while(j<risultati2.size()){
if (risultati1.get(i).get(0).equals(risultati2.get(j).get(0))&&risultati1.get(i).get(1).equals(risultati2.get(j).get(1))&&risultati1.get(i).get(2).equals(risultati2.get(j).get(2))){
//se i primi tre elementi sono uguali prendo risultati2
risultati_totali.add(risultati2.get(j));
i+=1;
j+=1;
}else{
//se no inserisco i risultati1 (risultati1 e risultati2 sono popolati in maniera ordinata rispetto ai 3 elementi controllati)
risultati_totali.add(risultati1.get(i));
i+=1;
}
}
//non ci sono piu elementi in risultati2
risultati_totali.add(risultati1.get(i));
i=i+1;
}
metodo(risultati_totali);
}else if (risultati2.isEmpty()){
//risultati2 è vuoto
metodo(risultati1);
}
Mi è stato chiesto di rifarlo in maniera "object oriented" (credo utilizzando meglio generics, mappe e quant'altro)...qualche suggerimento??