Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di softoxy
    Registrato dal
    Apr 2001
    Messaggi
    202

    [JAVA] Problema inizializzazione Vector

    Come posso inserire un oggetto in un Vector direttamente con l'indice?
    Ad esempio

    Vector a = new Vector(); //mi crea un vettore di 10 elementi

    a.add(3, "XXX"); // errore 3 > 0

    for (int i = 0; i < 3; i++) {
    a.add("x");
    }

    è necessaria quest'ultima operazione?

    Grazie.
    Soft!2001

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ho sempre usato Vector come lista (senza quindi usare gli altri costruttori se non quello senza parametri). In verità, ne esistono anche altri, che ti consentono di specificare la dimensione iniziale e pure l'incremento di dimensione.

    Prova pertanto a creare il Vector con

    codice:
    Vector myVector = new Vector(10); //10 è la capacità iniziale
    e vedi se a quel punto il tuo codice funziona.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3

    Re: [JAVA] Problema inizializzazione Vector

    Originariamente inviato da softoxy
    Come posso inserire un oggetto in un Vector direttamente con l'indice?
    Ad esempio

    Vector a = new Vector(); //mi crea un vettore di 10 elementi

    a.add(3, "XXX"); // errore 3 > 0

    for (int i = 0; i < 3; i++) {
    a.add("x");
    }

    è necessaria quest'ultima operazione?

    Grazie.
    Usa il metodo insertElementAt(Object toInsert,int position)

    rettifico ,probabilmente ti darà errore anche così perchè
    l'indice deve essere comunque minore del valore ritornato da size() e questo metodo serve a sostituirne un elemento già esistente
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #4
    Originariamente inviato da Andrea1979
    Ho sempre usato Vector come lista (senza quindi usare gli altri costruttori se non quello senza parametri). In verità, ne esistono anche altri, che ti consentono di specificare la dimensione iniziale e pure l'incremento di dimensione.

    Prova pertanto a creare il Vector con

    codice:
    Vector myVector = new Vector(10); //10 è la capacità iniziale
    e vedi se a quel punto il tuo codice funziona.
    Aspetta però, quel costruttore specifica solo l'initial capacity (cioè di fatto la dimensione dell'array usato internamente da Vecto per gestire i dati) ma la dimensione ritornata da size() resta zero così e viene determinata in base al numero di elmenti inseriti.Il parametro di quel costruttore è solo usato per questioni di efficienza quando si conosce a pariori il numero di elementi da inserire
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ecco, non parlo più
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Originariamente inviato da Andrea1979
    ecco, non parlo più
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #7
    Utente di HTML.it L'avatar di softoxy
    Registrato dal
    Apr 2001
    Messaggi
    202

    ...........

    Grazie per le risposte.

    Ma anche con

    Vector myVector = new Vector(10);

    creo un vector con elementi che puntano a null.

    Io ho inserito oggetti String fino al numero di elementi che mi interessano, dopodichè ho provato ad usare sia add(i, "x") che
    insertElementAt("x", i), ma il risultato è lo stesso, ossia, mi sostituisce il valore con quello desiderato nella posizione scelta, ma incrementa lo stesso la dimensione del Vector per ogni aggiornamento che faccio....

    Nelle specifiche dei metodi insert e add c'è un controllo sulla dimensione del vector, per questo va in errore se l'indice supera la dimensione (che inizialmente è 0).
    Soft!2001

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    47
    prova con questo codice...

    Vector<String> vector = new Vector(10);
    String x = new String("");
    for(int i=0; i<vector.size(); i++){
    vector.add(i, x);
    }

    in questo modo dovresti avere un vettore inizializzato e poi se successivamente fai un add(3, "Stringa"); non dovresti avere problemi...

    prova almeno...
    ..::AXIS RuLez::..

  9. #9
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    facciamo un po' di ordine
    add fa questo, Shifts the element currently at that position (if any) and any subsequent elements to the right
    insertElementAt fa, This method is identical in functionality to the add(Object, int) method
    set(int index, E element) fa, Replaces the element at the specified position in this Vector with the specified element
    credo che questo sia quello che serve

  10. #10
    Originariamente inviato da floyd
    facciamo un po' di ordine
    add fa questo, Shifts the element currently at that position (if any) and any subsequent elements to the right
    insertElementAt fa, This method is identical in functionality to the add(Object, int) method
    set(int index, E element) fa, Replaces the element at the specified position in this Vector with the specified element
    credo che questo sia quello che serve
    Ciò non toglie che l'indice passato a set debba essere inferiore al valore size()-1. Ma cos'è che vuoi far esattamente? Inserire in una posizione a caso senza aver inserito ancora nessun altro elemento? Non puoi!
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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