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

    [java] ArrayList Collection sostituire i valori

    Ciao ho questo codice:

    List<Pere> codiciPere = new ArrayList<Pere>();

    Pere rit = new Pere();
    rit = new Pere(12,0,0);
    codiciPere.add(rit);
    rit = new Pere(15,0,0);
    codiciPere.add(rit);
    rit = new Pere(23,0,0);

    Il problema è questo, la lista viene crearata in questo modo:
    alla posione 0 ci sono i valori 12,0,0
    alla posione 1 ci sono i valori 15,0,0
    alla posione 2 ci sono i valori 23,0,0

    io vorrei invece mettere i valori 12,0,0 alla posizione 12 etc...
    solo che se faccio: codiciPere.add(12,rit); mi dice
    IndexOutOfBoundsException

    HELP come cavolo faccio??

  2. #2
    Perchè devi specificare una dimensione iniziale all'ArrayList, mi pare che di default sia 10.
    Prova a fare: new ArrayList < Pere > (20);

  3. #3
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Ma scusa....Tu hai una Collection di dimensioni che non conosci, che istanzi senza definirne una dimensione e poi provi ad accedere ad una posizione del vettore di cui non sei neppure sicuro che esista???

    Devi dichiarare una dimensione per quella List.

    @Dreamer89
    Perchè devi specificare una dimensione iniziale all'ArrayList, mi pare che di default sia 10.
    Se è vero ho imparato qualcosa di nuovo....A me risultava che essendo un'implementazione dell'interfaccia List venisse creata vuota e grazie alla sua proprietà di lista di dimensioni dinamiche variasse la sua dimensione a seconda dei valori inseriti....anche perchè logicamente non potrei mai verificare che la List sia vuota prendendo la sua dimensione ( dato che è uguale a 10 per dafault ), ma dovrei analizzare il suo contenuto....Scusa ma dopo questo ragionamento sarai giunto alla conclusione anche tu che non è possibile, ma fino a prova contraria....
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  4. #4
    In realtà qui c'è scritto cosi
    Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator. The ArrayList instance has an initial capacity of 110% the size of the specified collection.

    Iniziale, e comunque non c'è modo.

    Ho risolto in un altro modo, ho cercato il valore 12 e mi sono fatto restituire l'indice dove quel valore è specificato e poi ho fatto il set....

    ciao grazie

  5. #5
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente scritto da albertogianotti
    In realtà qui c'è scritto cosi
    Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator. The ArrayList instance has an initial capacity of 110% the size of the specified collection.
    A dir la verità nella documentazione Sun c'è scritto:
    http://java.sun.com/j2se/1.4.2/docs/...ArrayList.html

    Constructor Detail

    public ArrayList(int initialCapacity)


    Constructs an empty list with the specified initial capacity.

    Parameters:
    initialCapacity - the initial capacity of the list.
    Throws:
    IllegalArgumentException - if the specified initial capacity is negative

    public ArrayList()

    Constructs an empty list with an initial capacity of ten.

    public ArrayList(Collection c)

    Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator. The ArrayList instance has an initial capacity of 110% the size of the specified collection.

    Parameters:
    c - the collection whose elements are to be placed into this list.
    Throws:
    NullPointerException - if the specified collection is null.
    Che è un pò differente da quello che hai scritto tu.
    Infatti qualora l'ArrayList viene istanziato con una dimensione avremo che la dimensione dell'ArrayList rimane la stessa, mentre nel solo caso in cui viene istanziato tramite un'altra Collection allora la sua dimensione sarà pari al 110% della dimensione della Collection.....

    Quindi attenzione a quello che scriviamo, perchè un forum tecnico di programmazione è paragonabile ad un docente e se qualche novita legge potrebbe imparare cose che non sono...
    Tante volte mi è capitato di dire cafonate, ed ho cercato di rimediare ai miei errori, documentandomi correttamente.
    Se mi è permesso è un caloroso consiglio che do a tutti....

    La mia intenzione non è sicuramente quella di far partire un flame, ma quello di puntualizzare come sono realmente le cose, per evitare che vengano trasmesse notizie fasulle o incomplete.

    Scusate e spero sia stato di aiuto per tutti!!!
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  6. #6
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    @Dreamer89
    Devo porgerti le mie scuse, in quanto sono andato ad analizzare il sorgente della classe ArrayList ed ho trovato questo:

    codice:
      /**
     * Constructs an empty list with an initial capacity of ten.
     */
     public ArrayList() {
        this(10);
     }
    Quindi è corretto, se viene creata una ArrayList di dimensione vuota, questa invece viene istanziata con dimensione pari a 10.

    Ho imparato una cosa nuova....Grazie Dreamer89!
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  7. #7
    Che è un pò differente da quello che hai scritto tu.
    Infatti qualora l'ArrayList viene istanziato con una dimensione avremo che la dimensione dell'ArrayList rimane la stessa, mentre nel solo caso in cui viene istanziato tramite un'altra Collection allora la sua dimensione sarà pari al 110% della dimensione della Collection.....
    In realtà la mia domanda iniziale era questa:
    Ciao ho questo codice:
    List<Pere> codiciPere = new ArrayList<Pere>(); etc...
    Che è istanziato tramite una Collection...
    E' corretto?

    Ciao

  8. #8
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Scritto da albertogianotti
    Che è istanziato tramite una Collection...
    E' corretto?
    Ecco scoperto il fraintendimento.....
    La risposta alla tua domanda è no.
    Infatti nel caso in cui volessi istanziarlo con una Collection la sintassi sarebbe questa
    codice:
    List<Pere> codiciPere = new ArrayList<Pere>( ArrayList<Cachi> );
    In questo modo lui istanzia codiciPere con ArrayList<Cachi> e lo incrementa del 10% della sua dimensione.....
    Al posto di ArrayList<Cachi> ( ovviamente la variabile che lo rappresenta ) puoi mettere un qualsiasi oggetto che estenda la classe Collection ( ArrayList, Map, HashMap, Set, ecc... ).

    Capito?
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  9. #9
    Originariamente inviato da @DI3GO@
    @Dreamer89
    Devo porgerti le mie scuse, in quanto sono andato ad analizzare il sorgente della classe ArrayList ed ho trovato questo:

    codice:
      /**
     * Constructs an empty list with an initial capacity of ten.
     */
     public ArrayList() {
        this(10);
     }
    Quindi è corretto, se viene creata una ArrayList di dimensione vuota, questa invece viene istanziata con dimensione pari a 10.

    Ho imparato una cosa nuova....Grazie Dreamer89!
    Poteva bastare ad andare a dare un'occhiata alla documentazione ufficiale: http://java.sun.com/j2se/1.4.2/docs/...html#ArrayList(int) :P

    Dimensione e capacità sono due cose diverse. Nel primo caso, è un numero che rappresenta gli elementi contenuti nell'ArrayList. Nel secondo invece, è un numero che rappresenta il massimo di elementi che l'ArrayList può contenere.

    Quando la dimensione raggiunge la capacità, quest'ultima viene automaticamente incrementata (ora non ricordo in base a quale calcolo viene definita la nuova capacità). Ovviamente aumentare la capacità durante l'uso dell'ArrayList comporta uno "sforzo" nelle prestazioni, a vantaggio di una migliore gestione della memoria.
    Se invece si specifica dall'inizio una capacità iniziale molto grande, di sicuro le prestazioni saranno migliori, ma sta volta a discapito della memoria

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.