Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA] Creare Matrice di Vector

    Salve,

    devo realizzare una matrice di Vettori e richiamarne alcuni metodi dei singoli oggetti che li compongono ma ho delle difficoltà.
    Mi spiego con un esempio:

    Per realizzare ed usare i metodi di un vettore farò una cosa simile:

    Codice PHP:
    Vector vettore = new Vector();

    vettore.add(new String("ciao"));
    vettore.add(new String("mondo"));

    String tmp = (String) vettore.elementAt(0);
    System.out.println(tmp.length());   // Output 4 
    Per creare una matrice di Vettori farò una cosa simile:

    Codice PHP:
    Vector d = new Vector();

    for (
    int i 05i++) {
        
    Vector v = new Vector();

        for (
    int j 02j++) {
            
    v.add(new String(" Ciao "));                
        }

        
    d.add(v);
    }

    System.out.println(d.toString()); 
    L'istruzione di stampa dell'ultima riga mi da un output di questo tipo:
    [[ Ciao , Ciao ], [ Ciao , Ciao ], [ Ciao , Ciao ], [ Ciao , Ciao ], [ Ciao , Ciao ]]

    Ho quindi creato un matrice di vettori con 5 righe e 2 colonne.

    Come chiamo ora uno specifico elemento della matrice, per esempio quello della seconda riga alla prima colonna? L'istruzione del primo esempio, cioè
    Codice PHP:
    String tmp = (String) vettore.elementAt(0);
    System.out.println(tmp.length()); 
    oramai non mi è più utile in quanto devo impostare il numero di riga e colonna...insomma spero di essere stato chiaro.

    Grazie dell'attenzione,
    Matthew.
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Prima di procedere con questo esempio, poniamo una domanda: sei sicuro che non ti siano più utili gli array? Ad esempio, una matrice 5 x 2 di vettori la puoi realizzare più semplicemente in questo modo:
    codice:
    Vector[][] d = new Vector[5][2];
    for(int i=0; i<5; i++) {
       for(int j=0; j<2; j++) {
          d[i][j] = new Vector();
       }
    }
    E di conseguenza è più facile indicizzarla: per prendere la prima stringa dell'elemento di riga 3 e colonna 1:
    codice:
    String tmp = (String) d[2][0].elementAt(0);
    Si può fare anche con un insieme di Vector di Vector, ma risulta più "difficile" manovrarli... se ci dici che con gli array non puoi lavorare (perchè, magari, hai matrici dinamiche, ecc), allora proseguiamo con i Vector di Vector.

    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

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280

    Re: [JAVA] Creare Matrice di Vector

    Originariamente inviato da matthew80
    Come chiamo ora uno specifico elemento della matrice, per esempio quello della seconda riga alla prima colonna?
    Se vuoi usare Vector di Vector, allora:

    String str = (String) ((Vector) d.elementAt (riga)).elementAt (colonna);

    O per dirlo in modo più esteso:

    Vector v = (Vector) d.elementAt (riga);
    String str = (String) v.elementAt (colonna);

    EDIT: se usassi i "generics", sarebbe molto più comodo:

    Vector<Vector<String>> d = new Vector<Vector<String>> ();
    ....

    String str = d.elementAt (riga).elementAt (colonna);
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Anzitutto grazie a tutti e due per la risposta.

    Rispondendo a LeleFT, in effetti io avevo realizzato il tutto con una matrice di array, ma purtroppo ho notato che durante l'esecuzione la dimensione può, in rari casi, aumentare o diminuire e quindi ecco che entra in gioco una struttura dinamica.

    Andbin sei il mio mito. Sembrerà strano ma prima di leggere la tua risposta avevo provato una soluzione come quella che mi hai proposto tu...l'avere conferma nel leggere la tua risposta è stata un esperienza di non poco conto

    Il problema però secondo me sarà un altro. Questa matrice di Vector sarà composta di tanti oggetti di un certo tipo con i loro metodi set/get. Ora se io faccio una cosa tipo:

    Codice PHP:
    Vector v = (Vectord.elementAt (riga);
    MyObject mo = (MyObjectv.elementAt (colonna);

    mo.setVal(5); 
    Io vado a modificare una nuova copia del valore e non il riferimento....cioè io non modifico la riga tot della colonna tot della mia matrice ma un oggetto diverso...o sbaglio?

    Con gli array mi bastava un semplice
    Codice PHP:
    myArray[3][4].setVal(5); 
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da matthew80
    Ora se io faccio una cosa tipo:

    Codice PHP:
    Vector v = (Vectord.elementAt (riga);
    MyObject mo = (MyObjectv.elementAt (colonna);

    mo.setVal(5); 
    Io vado a modificare una nuova copia del valore e non il riferimento....cioè io non modifico la riga tot della colonna tot della mia matrice ma un oggetto diverso...o sbaglio?
    No: in quel modo vai a modificare esattamente lo stesso oggetto.


    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.