PDA

Visualizza la versione completa : [JAVA] Ordinare file di testo


naide
31-10-2005, 20:28
se ho un file di testo contenente i seguenti dati:

numero1, nome, cognome
numero2, nome, cognome
numero3, nome, cognome

come posso ordinarlo in base ai numeri?

se ad esempio numero1=5 e numero2=3 e numero3=6
il file dovrebbe essere riordinato

numero2, nome, cognome
numero1, nome, cognome
numero3, nome, cognome

si pu˛ fare? :master:
o dovrei giÓ scriverlo ordinandolo?

eumene
01-11-2005, 10:49
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




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;
}
}

}


A questo punto puoi riempire un java.util.Vector di Anagrafica, una per ogni riga ( O(n) ) durante il caricamento del file.

Con il codice seguente, inoltre, ordinerai con mergesort gli elementi del tuo vettore secondo la specifica del metodo compareTo




// 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]);
}


Adesso puoi salvare il file scorrendo il tuo Vector.

Che ne dici???

Ciao

naide
01-11-2005, 16:46
adesso provo e ci lavoro un po' su.... grazie!

Loading