Un modo più rapido...

di il
10 risposte

Un modo più rapido...

Ciao, chi ha voglia di suggerirmi un modo più rapido, utile per generare sequenze numeriche simili?
for (int n = 1; n <= 30; n++) {
            for (int n2 = n+1; n2 <= 30; n2++) {
            	for (int n3 = n2+1; n3 <= 30; n3++) {
            		for (int n4 = n3+1; n4 <= 30; n4++) {
            			for (int n5 = n4+1; n5 <= 30; n5++) {           				       
            				temp.add(n+"."+n2+"."+n3+"."+n4+"."+n5);
            			}
            		}
            	}
            }
        }
Per rapido intendo, che impieghi meno tempo per generare/popolare l'ArrayList (in questo caso);

10 Risposte

  • Re: Un modo più rapido...

  • Re: Un modo più rapido...

    Ciao Andrea, ti ringrazio per la risposta.

    1) perché dici che nell'ultimo ciclo annidato 4 valori sono praticamente costanti?

    se prendo a caso i valori che genera ottengo questo:
    14.18.20.24.27
    14.18.20.24.28
    14.18.20.24.29
    14.18.20.24.30
    14.18.20.25.26
    14.18.20.25.27
    14.18.20.25.28
    14.18.20.25.29
    ...
    24.26.28.29.30
    24.27.28.29.30
    25.26.27.28.29
    25.26.27.28.30
    25.26.27.29.30
    25.26.28.29.30
    25.27.28.29.30
    26.27.28.29.30

    2) Come faccio a resettare una StringBuilder, voglio dire in base a quale valore, suppongo dovrò inserirla all'interno dell'ultimo ciclo o sbaglio?
    Non posso mica fare if(n == 30 || n2 == 30 || n3 == 30 || n4 == 30) sb.setLength(0); Che senso avrebbe? Tanto meno non mi sembra corretto creare 5 sb.

    3) Quindi inizializzare in questo modo - List<String> temp = new ArrayList<String>(142507); è cosa utile?

    Illuminami Andrea, è un problema che mi porto avanti da troppo tempo e vorrei una volta per tutte risolverlo...

    Ciao e grazie ancora.
  • Re: Un modo più rapido...

  • Re: Un modo più rapido...

    Non avevo mai inserito una dimensione iniziale nella StringBuilder, sì comunque è vero, in questo modo recupero già circa il 50%, ma il vero problema si presenta quando le righe/create da leggere diventano milioni/miliardi è una roba che ancora oggi non riesco a gestire, un rimedio che sto implementando e l’utilizzo di Scanner per leggere, che pare sia un po’ più rapido. Ho pensato anche di zippare i file in questione è inserirli direttamente in una specifica cartella, però è una cosa che non ho mai fatto e non so fino a che punto ne valga la pena.

    ...Ma, dovrei giustamente essere più specifico quindi facciamo che tornare al tuo EDIT, quando dici «un'altra possibile ottimizzazione è pre-costruire le stringhe dei numeri» cosa intendi, in che modo potrei farlo?

    Hai voglia, poi, di farmi un esempio?

    Non penso ti rifesci a String.Format(“%02d”, numero)… in questo caso rallenta parecchio tutto il processo.
  • Re: Un modo più rapido...

  • Re: Un modo più rapido...

    In effetti detta così si capisce poco, in buona sostanza dovrò poi eseguire un confronto, e stavo anche pensando, visto che ‘Sì’ queste liste una volta completate conterranno sempre valori costanti, i famosi che poi dovrò confrontare con altri..., allora mi chiedevo se salvare i file (con dimensioni che variano da 8kB a 50MB) già belli che pronti in locale sia un’opzione valida o meno, in maniera tale che quando mi occorrono eseguirò una lettura (appunto con Scanner || BufferedReader), per questo parlavo anche di zip eccetera.

    Invece tornando al resto, proverò a seguire il tuo suggerimento, e ti ringrazio.
  • Re: Un modo più rapido...

  • Re: Un modo più rapido...

    Lista base:
    ...
    4.5.10.11.19
    4.5.10.11.20
    4.5.10.12.13
    4.5.10.12.14
    4.5.10.12.15
    4.5.10.12.16
    4.5.10.12.17
    4.5.10.12.18
    4.5.10.12.19
    4.5.10.12.20
    4.5.10.13.14


    Esempio Lista da confrontare:
    68.04.75.76.34
    87.04.65.57.31
    20.50.70.69.41
    58.88.68.45.79
    44.56.60.57.32
    63.44.25.55.16
    15.77.67.48.65

    E farà parte di un'applicazione Andrea, dove santo dispositivo potrebbe essere poco performante...
  • Re: Un modo più rapido...

  • Re: Un modo più rapido...

    Non utilizzo matrici comunque la sostanza cambia poco, questa è un’opzione che avrei voluto aggiungere ...andrò avanti a fare altro.
    Grazie Andrea!
Devi accedere o registrarti per scrivere nel forum
10 risposte