Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    20

    [JAVA] ArrayList di array

    Dunque, ho un problema con questa struttura diciamo "ibrida". In sostanza ho creato un ArrayList che ha come elementi degli array di interi primitivi:
    codice:
    ArrayList<int[]> indici = new <int[]>ArrayList();
    Ad un certo punto del codice creo un array di int che successivamente viene popolato all'interno di un ciclo:
    codice:
    int indexes[] = new int[5];
    Stampando gli elementi di tale array ho la riprova che esso contiene esattamente quello che mi aspettavo (interi diversi da 0).
    Ora il problema è che provando ad inserire questo array come elemento dell'ArrayList...
    codice:
    indici.add(indexes);
    ...mi rendo conto che però gli elementi di indici (cioè di tutti gli indexes di volta in volta "copiati" in indici) contengono solo zeri.

    Quello che mi interessa capire è se quell'ultima istruzione postata (l'add con parametro in ingresso il riferimento a indexes) ha senso oppure è normale che venga copiato un array con tutti gli elementi uguali a 0.
    E se fosse questo il caso, come dovrei fare per far sì che il primo (o il secondo, o l'ultimo) array di indici contenga esattamente gli stessi elementi di indexes?

    Se invece l'istruzione add ha senso, almeno so che l'errore sta altrove

    Grazie in anticipo

  2. #2
    Non hai avuto problemi in compilazione con il codice che utilizzi??

    L'arrayList come il vector ecc ecc vanno istanziati in questo modo :

    codice:
    ArrayList<int[]> indici =  new ArrayList<int[]>();
    risolto questo piccolo problema, ti compilerà, e avrai il risultato che attendi!


  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Quel codice non può essere compilato, per un errore di sintassi nella creazione dell'ArrayList. Ammettendo che l'errore sia stato riportato sul forum, ma non nel codice reale, deve esserci anche qualche altro errore.

    Questo esempio banale non soffre del problema che hai esposto tu:

    codice:
    import java.util.*;
    
    public class ArrayInteri {
       public static void main(String[] args) {
          ArrayList<int[]> lista = new ArrayList<int[]>();
          Random r = new Random();
          for(int i=0; i<10; i++) {
             int[] array = new int[5];
             for(int j=0; j<5; j++) array[j] = r.nextInt( 1000 ) + 1;
             lista.add( array );
          }
          for(int[] array : lista) {
             for(int y : array) System.out.print( y + " - ");
             System.out.println();
          }
       }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Puoi postare la parte di codice?

    Io ho fatto al volo queste righe ed il risultato è corretto...
    codice:
            int indexes[] = new int[5];
            for ( int i = 0; i < indexes.length; i++ )
            {
                indexes[i] = 2 * i;
            }
    
            ArrayList<int[]> indici = new ArrayList<int[]>();
            indici.add(indexes);
    
            for ( int i = 0; i < indici.size(); i++ )
            {
                int[] temp = indici.get(i);
                for ( int j = 0; j < temp.length; j++ )
                {
                    System.out.printf("temp[%d] = %d\n", j, temp[j]);
                }
            }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Anche io ho fatto le vostre stesse prove, un primo problema era il compilare la classe, che senza quello non poteva funzionare..

    Presumo che l'altro problema, nel caso ci sia, sia dovuto al caricamento dell'array o alla sua lettura, dato che mostra l'inserimento di un solo array nell'arraList

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    20
    Originariamente inviato da robbie89
    Non hai avuto problemi in compilazione con il codice che utilizzi??

    L'arrayList come il vector ecc ecc vanno istanziati in questo modo :

    codice:
    ArrayList<int[]> indici =  new ArrayList<int[]>();
    risolto questo piccolo problema, ti compilerà, e avrai il risultato che attendi!

    Potrai non credermi, ma non mi ha mai dato errore in compilazione.
    Comunque proverò a istanziarlo nel modo da te indicatomi, anche se dubito che il problema risieda lì.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da Arethel
    Potrai non credermi, ma non mi ha mai dato errore in compilazione.
    Sei proprio sicuro sicuro?

    codice:
    TestArray.java:5: cannot find symbol
    symbol  : constructor <int[]>ArrayList()
    location: class java.util.ArrayList
          ArrayList<int[]> lista = new <int[]>ArrayList();
                                   ^
    1 error
    Che versione di JDK stai usando? Su che sistema operativo?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    20
    Originariamente inviato da Alex'87
    Puoi postare la parte di codice?

    Io ho fatto al volo queste righe ed il risultato è corretto...
    codice:
            int indexes[] = new int[5];
            for ( int i = 0; i < indexes.length; i++ )
            {
                indexes[i] = 2 * i;
            }
    
            ArrayList<int[]> indici = new ArrayList<int[]>();
            indici.add(indexes);
    
            for ( int i = 0; i < indici.size(); i++ )
            {
                int[] temp = indici.get(i);
                for ( int j = 0; j < temp.length; j++ )
                {
                    System.out.printf("temp[%d] = %d\n", j, temp[j]);
                }
            }
    Posterò a breve la parte di codice (se nel frattempo non trovo la soluzione), comunque mi interessava avere conferma che quella specifica istruzione avesse senso.
    Ovviamente ho provato anche con l'altra forma di istanziamento ma il risultato è lo stesso.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    20
    Originariamente inviato da LeleFT
    Sei proprio sicuro sicuro?

    codice:
    TestArray.java:5: cannot find symbol
    symbol  : constructor <int[]>ArrayList()
    location: class java.util.ArrayList
          ArrayList<int[]> lista = new <int[]>ArrayList();
                                   ^
    1 error
    Che versione di JDK stai usando? Su che sistema operativo?


    Ciao.
    1.6.0_20
    su Ubuntu (kernel 2.6.32-41)

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da Arethel
    1.6.0_20
    su Ubuntu (kernel 2.6.32-41)
    L'hai installata tu o è quella "di default"? Te lo chiedo perchè so che alcune distribuzioni Linux, in fase di installazione, consentono l'aggiunta del pacchetto Java... che però non è l'implementazione standard offerta da Oracle.

    Garantisco che quel codice, così com'è, con una JDK standard non compila.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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