La cosa forse più intuitiva è questa:
Carica File
Ordina
Salva File
La complessità computazionale non è alta, anzi, è O(nlogn) che è il limite asintotico nativo degli ordinamenti (ovviamente usando Merge Sort)
Ti consiglio di realizzare una classe del tipo
A questo punto puoi riempire un java.util.Vector di Anagrafica, una per ogni riga ( O(n) ) durante il caricamento del file.codice:public class Anagrafica implements Comparable { // Proprietà per le quali prevedi anche getter e setter private String nome; private String cognome; private int numero; /** * Costruttore */ public Anagrafica(String nome, String cognome, int numero) { this.nome = nome; this.cognome= cognome; this.numero= numero; } /** * Redifinizione metodo compareTo */ public int compareTo(Object obj) throws ClassCastException { if(! (obj instanceof Anagrafica)) { throw new ClassCastException(); } Anagrafica compare = (Anagrafica) obj; if(getNumero() < compare.getNumero()) { return -1; } else if(getNumero() > compare.getNumero()) { return 1; } else { return 0; } } }
Con il codice seguente, inoltre, ordinerai con mergesort gli elementi del tuo vettore secondo la specifica del metodo compareTo
Adesso puoi salvare il file scorrendo il tuo Vector.codice:// Suppongo che il vettore sia già pieno java.util.Vector anagrafiche // Trasformo in array di oggetti Object objs[] = anagrafiche.toArray(); // Ordino con merge sort java.util.Arrays.sort(objs); // Riempio il mio Vector opportunamente svuotato anagrafiche.clear(); for(int i = 0; i < objs.length; i++) { anagrafiche.add(i, objs[i]); }
Che ne dici???
Ciao

Rispondi quotando