Oppure

Loading
31/01/14 16:43
Erreg
ciao a tutti
vorrei sviluppare un programma in Java ( uso NetBeans ) che dato un certo numero (N) di oggetti , mi proponga delle sequenze formate da tutti gli oggetti , filtrate e ordinate con dei parametri .
mi sono inceppato presto , la mia idea era quella sviluppare tutte le conbinazioni (permutazioni) possibili di (N) assegnarle ad un array e successivamente andarle a filtrare , ma finché rimango entro i dieci numeri riesco a dimensionare l'array per contenere tutte le combinazioni , ma quando passo i dieci ..... il PC mi dice :vai al negozio e compra altra memoria .
ora mi chiedevo c'è qualche anima buona che mi vorrà dare qualche suggerimento per metodi alternativi ?
ciao !!!
package provamemoria;

public class ProvaMemoria {

    static String tutteLePermut[];
    static int numPermut;

    public static void Permutazioni(int numero) {
        /* in questa prima parte il metodo determina dato un numero 
         quante sone la permutazioni totali "  totpermut  "  */
        int totpermut = numero;
        int numerodue = totpermut - 1;
        while (numerodue > 0) {
            totpermut = totpermut * numerodue;
            numerodue--;
        }
        numPermut = totpermut;// e le assegna alla variabile " numPermut "
        System.out.println(" il numero totale delle permutazioni è   " + numPermut);
        /* dimensiono l'array " tutteLePermut " in seguito conterrà tutte 
         le permutazioni  sviluppate una per ogni elemento
         */
        tutteLePermut = new String[numPermut];

    }

    public static void main(String[] args) {
        ProvaMemoria.Permutazioni(5);
    }

}
Ultima modifica effettuata da Erreg 31/01/14 16:50
aaa
31/01/14 16:59
pierotofy
Potresti filtrare gli oggetti cosi' come vengono creati, senza memorizzarli nell'array... (crea un oggetto, vedi se il filtro lo permette, se lo permette aggiungilo all'array, se non e' permesso semplicemente non aggiungerlo all'array).
Il mio blog: piero.dev
31/01/14 17:03
Bonny
Tasto destro sul progetto poi -> properties -> run
nella voce "VM Options" scrivi
-Xms512m -Xmx1024m


Ciè vuol dire che fai partire la java virtual machine con uno spazio minimo sull heap di 512mb e massimo 1gb..
Ovviamente dipende dalle performance dell'hardware installato nella tua macchina, quindi vedi tu se aumentare questi parametri.

ps: Netbeans lancia la tua applicazione con:
java -Xms512m -Xmx1024m -jar yourApp.jar

netBeans semplifica solo la chiamata
aaa
31/01/14 20:32
Erreg
prima di tutto grazie per le risposte ( istantanee )

per Pierotofy
ho pensato alla soluzione che proponi , però avrei il problema del dimensionamento dell'array , dovrei sovradimensionarlo oppure una volta raggiunto il limite massimo fare un qualcosa tipo copia dei dati dell'array , creazione di un array più grande e incolla dei dati ( mi sembra un po incasinato visto il mio basso livello di conoscenza ).

per Bonny
ho provato ad assegnare una quantità di memoria maggiore ( -Xms512 -Xmx2048 ) o provato anche
( -Xms1024 -Xmx2048 )ma nella finestra di output di netbeans mi compare il messaggio :
Error occurred during initialization of VM
Too small initial heap
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

invece se provo ad avviare la parte di codice che ho postato con 12 anziché 5 il messaggio è il seguente :
il numero totale delle permutazioni è 479001600
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at provamemoria.ProvaMemoria.Permutazioni(ProvaMemoria.java:22)
    at provamemoria.ProvaMemoria.main(ProvaMemoria.java:27)
Java Result: 1

ciao e grazie ad entrambi :)
Ultima modifica effettuata da Erreg 31/01/14 21:00
aaa
01/02/14 21:36
Erreg
ok .
provo a vedere di capire qualcosa della classe ArrayList , vi aggiornerò
ciao e grazie
aaa