Grazie al tuo aiuto e alla tua pazienza forse c'è l'ho fatta,
allora ho creato 3 classi che implementano comparator
una per ogni campo
poi nel main creo un menù che a secondo del parametro passato da riga di comando usa uno dei 3 compare,
sotto ho fatto solo l'esempio del compare tra stringhe.
può andare ? oppure puiò/deve essere implementato meglio ?
l'ordinamento ora funziona dal piu grande al più piccolo
codice:
public class Field1Comparator implements Comparator<Record>{
@Override
public int compare(Record r1, Record r2){
String f1 = r1.getField1();
String f2 = r2.getField1();
return f1.compareTo(f2);
}
}
codice:
public class InsertionSort {
public <T> void sort (ArrayList<T> l, Comparator<? super T> c){
for(int i=1; i< l.size(); i++){
T value = l.get(i);
int j = i-1;
while( j >= 0 && (c.compare( value, l.get(j) ) >0 ) ){
l.set(j+1, l.get(j));
j--;
}
l.set(j+1, value);
}
}
main:
codice:
InsertionSort s = new InsertionSort();
s.sort(lista, new Field1Comparator());
for(Record item : lista ){
System.out.println(item.toString());
}
ti ringrazio ancora della tua pazienza