Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    148

    java- ordinare file di testo

    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?

  2. #2
    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

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

    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]);
    }
    Adesso puoi salvare il file scorrendo il tuo Vector.

    Che ne dici???

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    148
    adesso provo e ci lavoro un po' su.... grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.