Visualizzazione dei risultati da 1 a 8 su 8

Discussione: matrice di vector

  1. #1

    matrice di vector

    ho bisogno di una struttura del genere:
    un array di n elementi ognuno dei quali è un vector (per forza vector dato che non conosco a priori la lunghezza e mi fa comodo il metodo add)
    codice:
     Vector<String>[] x;//lo dichiaro ed è tutto ok 
    x= new Vector<String>[n];//da errore
    com'è la sintassi per inizializzare un oggetto di questo tipo?

    grazie a tutti!

  2. #2
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    non è che ti serve per forza vector.. puoi anche usare

    codice:
    List tuoElenco = new ArrayList();
    anche lui posside il metodo add..
    ma è solo un esempio..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

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

    Re: matrice di vector

    Originariamente inviato da ranza!!!123
    x= new Vector<String>[n];//da errore[/CODE]

    com'è la sintassi per inizializzare un oggetto di questo tipo?
    Si, dà errore perché Vector<String> è un tipo parametrizzato che secondo le regole di Java non è "reifiable" (non reificabile, ovvero non c'è a runtime la informazione che il Vector è di String!).

    In generale array e generics vanno poco d'accordo. Quindi fare un array di quel tipo sarebbe sconsigliabile. Meglio magari una lista (qualunque implementazione di List) di Vector.

    Se proprio si vuole usare l'array, basta fare:

    Vector<String>[] v = new Vector[10];

    ma si ha un warning di unchecked conversion. Nulla di grave, perché comunque se continuerai a usare quel 'v' trattandolo sempre come Vector<String>[] (senza che ci siano altri warning di unchecked), sarà poi tutto corretto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    intanto grazie per l'aiuto e la spiegazione esaustiva..però ho un problema adesso!
    quando provo a aggiungere elementi mi da una nullpointer exception..


    codice:
    Vector<String>[] x
    x= new Vector[n]//n=5
    x[0].add("ciao");
    dove sbaglio?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ranza!!!123
    intanto grazie per l'aiuto e la spiegazione esaustiva..però ho un problema adesso!
    quando provo a aggiungere elementi mi da una nullpointer exception..
    Una cosa è istanziare l'array .... un'altra è istanziare oggetti da assegnare agli elementi dell'array.

    Quando si istanza un array di reference, gli elementi sono tutti inizialmente a null.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    giusto..ho la mente un po' confusa in sto periodo

    aggiungendo

    x[j]=new Vector<String>(0,1);

    prima dell'add tutto fila liscio

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ranza!!!123
    x[j]=new Vector<String>(0,1);
    Questo costruttore indica la capacità iniziale e l'incremento. Valuta bene, in base a come/quanto dovrà essere usato il Vector, cosa mettere per questi due valori. Se ad esempio dovrai fare molte aggiunte nel Vector, ampliare sempre solo di 1 potrebbe essere meno efficiente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    sì è una considerazione che avevo fatto..dato che l'applicazione è piuttosto grande e l'oggetto che contiene quel vector è istanziato a sua volta diverse volte preferisco usare una soluzione più pesante computazionalmente ma che mi permette di risparmiare sulla memoria allocata

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.