Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 40
  1. #11
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Giusto per ricordare che l'efficienza di un algoritmo rispetto a un altro, in generale, dipende dai dati e siccome avevo voglia di provare NetBeans... ne ho approfittato per fare un test ...

    Le righe sono state ottenute da un file di testo di 230 righe (ottenuto splittando in modo uniforme il testo di una pagina di termini d'uso di Oracle... ciascuna riga era della dimensione dello schermo... poi capisci perché la gente non legge le clausole...).

    L'algoritmo basato su ArrayList (inserimento, ordinamento e successiva scansione) è risultato veloce circa il doppio di quello basato su HasMap (controllo di unicità della chiave ed inserimento, nessuna lettura da file in entrambi i casi).

    Per bong88 scoprire l'arcano potrebbe essere un esercizio interessante, se non ora, entro breve
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  2. #12
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    37
    quindi pastore12 ci sei riuscito
    io ho provato a modificare questo programma
    ma hoi 2 problemi uno è che se per esempio ho questo file massimo
    massimo
    massimo
    francesco
    francesco
    mi da che sono uguali solo 3 stringhe invece di 4
    e poi in esecuzione mi da questo errore :Exception in thread "main" java.lang.NullPointerException
    at dai2.main(dai2.java:31)
    non è che potresti darmi una mano questo è il prog


    import java.io.*;

    public class dai2 {
    public static void main(String[] args) throws IOException {
    FileReader leggi=new FileReader("trip.txt");
    BufferedReader leggicatalogo = new BufferedReader(leggi);
    String riga;
    int numRighe = 0;
    riga = leggicatalogo.readLine();

    while (riga != null) {
    numRighe++;
    riga = leggicatalogo.readLine();
    }
    System.out.println("il numero di righe è "+numRighe);
    leggicatalogo.close();
    FileReader leggi1=new FileReader("trip.txt");
    BufferedReader leggicatalogo1 = new BufferedReader(leggi1);
    String[] arrLinee = new String[numRighe];
    String[] arrLinee1 = new String[numRighe];

    for (int i=0;i<(arrLinee.length-1);i++)
    {
    arrLinee[i]=leggicatalogo1.readLine();


    for(int j=i+1;j<arrLinee.length;j++)
    {
    arrLinee[j]=leggicatalogo1.readLine();
    //System.out.print(arrLinee[j]);
    if (arrLinee[i].equals(arrLinee[j]))

    {

    leggicatalogo1.readLine();

    }
    else{

    System.out.print("sono uguali");
    System.out.print(" ");
    System.out.print("\n");


    }

    }
    }


    leggicatalogo1.close();

    }
    }

  3. #13
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    LeleFT ti aveva gentilmente chiesto di scrivere il codice in questo modo...
    Codice PHP:
    import java.io.*;

    public class 
    dai2 {
        public static 
    void main(String[] argsthrows IOException {
        
    FileReader leggi=new FileReader("trip.txt");
        
    BufferedReader leggicatalogo = new BufferedReader(leggi);
        
    String riga;
        
    int numRighe 0;
        
    riga leggicatalogo.readLine();

        while (
    riga != null) {
            
    numRighe++;
            
    riga leggicatalogo.readLine();
        }
        
        
    System.out.println("il numero di righe è "+numRighe);
        
    leggicatalogo.close();
        
    FileReader leggi1=new FileReader("trip.txt");
        
    BufferedReader leggicatalogo1 = new BufferedReader(leggi1);
        
    String[] arrLinee = new String[numRighe];

        for (
    int i=0;i<(arrLinee.length-1);i++)
        {
            
    arrLinee[i]=leggicatalogo1.readLine();


            for(
    int j=i+1;j<arrLinee.length;j++)
            {
                
    arrLinee[j]=leggicatalogo1.readLine();
                
    //System.out.print(arrLinee[j]);
                
    if (arrLinee[i].equals(arrLinee[j]))
                {
                    
    leggicatalogo1.readLine();
                }
                else{
                    
    System.out.print("sono uguali");
                    
    System.out.print(" ");
                    
    System.out.print("\n");
                }

            }
        }

    Al momento è un bel casino. Puoi semplificare di molto le cose se prima crei il tuo vettore correttamente popolato con tutte le righe del file di testo, e poi fai i confronti.
    Tu qua inizi i confronti ancora prima di aver letto completamente il file... e ci sono alcuni readLine di cui non capisco lo scopo...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  4. #14
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    37
    ok grazie per le critiche e l'individuazione di errori
    pero' qualcuno potrebbe aiutarmi a risolvere questo problema

  5. #15
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Originariamente inviato da bong88
    ok grazie per le critiche e l'individuazione di errori
    pero' qualcuno potrebbe aiutarmi a risolvere questo problema
    Oh, farò molto di più... ascolta i consigli dati e modifica l'algoritmo di conseguenza.
    In generale questo significa ricondurre il problema grosso a una serie di problemi più piccoli e trovare la soluzione per ciascuno di essi.

    Comunque se aiutandoti a trovare gli errori non ti sono di aiuto nel risolvere il tuo problema...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  6. #16
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    37
    scusami pastore 12
    ho letto i consigli dati, se ho capito bene dovrei
    leggere il file e mettere il contenuto in un array list
    leggerlo e confronatlo.
    il primo problema è che non ho capito come si mette il contenuto letto nell'array list

  7. #17
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Altro suggerimento vitale:
    Ricordati anche di Google

    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  8. #18
    Originariamente inviato da Pastore12
    Giusto per ricordare che l'efficienza di un algoritmo rispetto a un altro, in generale, dipende dai dati e siccome avevo voglia di provare NetBeans... ne ho approfittato per fare un test ...

    Le righe sono state ottenute da un file di testo di 230 righe (ottenuto splittando in modo uniforme il testo di una pagina di termini d'uso di Oracle... ciascuna riga era della dimensione dello schermo... poi capisci perché la gente non legge le clausole...).

    L'algoritmo basato su ArrayList (inserimento, ordinamento e successiva scansione) è risultato veloce circa il doppio di quello basato su HasMap (controllo di unicità della chiave ed inserimento, nessuna lettura da file in entrambi i casi).

    Per bong88 scoprire l'arcano potrebbe essere un esercizio interessante, se non ora, entro breve
    Forse il dizionario impiega più tempo nel rimpiazzare la chiave ripetuta di quanto ne impiega l'operazione di inserimento nella lista, che nel caso dell'ArrayList non è sempre costante! Ma per la tipologia di scansione che bisogna effettuare in questo caso è sicuramente più efficiente la prima struttura, per come sono implementati (il contains è più lento della get, e su questo non ci piove).

    Il fatto che la differenza di tempo sia il doppio mi sembra francamente irragionevole. Magari in privato mandami i due algoritmi.

  9. #19
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Originariamente inviato da VincenzoTheBest
    Il fatto che la differenza di tempo sia il doppio mi sembra francamente irragionevole. Magari in privato mandami i due algoritmi.
    Irragionevole mi sembra eccessivo, a meno che tu non conosca le costanti in gioco con le HashMap e con gli ArrayList (quelle che con n "piccolo" non si possono trascurare). Comunque ti manderò i sorgenti, non c'è problema.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  10. #20
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    37
    grazie al vostro aiuto o riscritto il codice penso in maniera esatta
    il problema adesso è come faccio a confrontare il conenuto
    di un array ad un altro quindi essenzialmente cosa devo scrivere nella if ho provato con il metodo equals ma non funziona grazie in anticipo

    codice:
    import java.io.*;
    import java.util.*;
    
    public class FileIO
    {
        public static void main(String[] args) throws IOException
        {
        	FileWriter scrivi = new FileWriter ("File-out.txt");
                 BufferedWriter scrivifile = new BufferedWriter(scrivi);
                 ArrayList bob = loadFile("trip.txt");
            
                for (int i=0; i<bob.size()-1; i++)
                {
            	     System.out.println(i+1 + ":\t" + bob.get(i));
            	     for (int j=i+1; j<bob.size(); j++)
                     {
               	       System.out.println(j+1 + ":\t" + bob.get(j));
               	       if(????????????????????????)
               	           {
          
                                scrivifile.write("b");
                                scrivifile.newLine();
               	            }
               	
                      }
               }
                                 scrivifile.close();
               	
                
        }
    
           public static ArrayList loadFile(String fileName)
        {
            if ((fileName == null) || (fileName == ""))
                throw new IllegalArgumentException();
            
            String line;
            ArrayList file = new ArrayList();
    
            try
            {    
                BufferedReader in = new BufferedReader(new FileReader(fileName));
    
                if (!in.ready())
                    throw new IOException();
    
                while ((line = in.readLine()) != null) 
                    file.add(line);
    
                in.close();
            }
            catch (IOException e)
            {
                System.out.println(e);
                return null;
            }
    
            return file;
        }
    }

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 © 2026 vBulletin Solutions, Inc. All rights reserved.