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

    [java] Dimensione array

    Ciao a tutti. Volevo kiedere se qualcuno conosce un modo x aumentare la dimensione massima di un array.
    Ad esempio ho
    int x[]= new int[n];
    come faccio dopo a far diventare la dimensione massima di x n+1?

  2. #2

    Re: [java] Dimensione array

    Originariamente inviato da mietitoredanime
    Ciao a tutti. Volevo kiedere se qualcuno conosce un modo x aumentare la dimensione massima di un array.
    Ad esempio ho
    int x[]= new int[n];
    come faccio dopo a far diventare la dimensione massima di x n+1?
    Riallocandolo:

    x= new int[n+1];

    Poi ci pensa il garbage collector a liberare la memoria per l'altro di n posti.
    Una cosa,in java è più corretto scrivere
    int[] x= new int[n];

    rispetto a

    int x[]= new int[n];
    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.)

  3. #3
    Se vuoi nascondere tutto questo meccanismo, e non hai particolari esigenze di performance (leggi, non devi fare calcolo numerico) puoi utilizzare la classe ArrayList.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  4. #4
    scusate ma se io ho un'array pieno di n elementi,riallocandolo perdo tutti gli elementi in esso memorizzato. Invece a me serve aggiungere un ulteriore elemento quando l'array è pieno. Come devo fare?

  5. #5
    Li copi nel nuovo array...

    Oppure usi ArrayList che fa tutto il lavoro per te. Siccome pero' usi gli interi, te lo consiglio solo se usi Java 1.5 (gli ArrayList contengono solo oggetti, e nelle vecchie versioni di Java bisognava effettuare la conversione da int a Integer)
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    questo è un modo veloce, ma puoi usare anche i Vector o ArrayList
    int[] tmp = new int[x.length + 1];
    System.arraycopy(x, 0, tmp, 0, x.length);
    tmp[tmp.length - 1] = 1;
    x = tmp;

  7. #7
    Comunque il succo è che devi riallocare tutto,sia che la cosa sia fatta da te manualmente sia che sia fatto in modo trasparente da ArrayList o affini,che io sappia non c'è un modo per aggiungere sepmlicemente un posto in più,non in java almeno.
    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.)

  8. #8
    L'array deve essere allocato in celle consecutive della RAM.
    A tempo di esecuzione nessuno puo' assicurarti che le celle successive all'array restino libere.
    A meno che non sia tu stesso a bloccarle.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  9. #9
    Java ragiona con gli oggetti, e un array una volta creato è e rimane un oggetto a sè stante finchè non viene distrutto dal garbage collector. Quindi pensare ad un array dinamico in Java è di per sè un pò assurdo perchè allo stesso modo funziona con le stringhe:
    se io ho "ciao", non posso pensare di fare stringa[2] = "b" ed avere "cibo", perchè "ciao" è un oggetto, "cibo" un altro. Per fare quell'operazione è stato creato un altro oggetto chiamato StringBuffer.
    A livello pratico io mi trovo molto bene con i Vector, ora surclassati dagli ArrayList e compari. Nel Vector hai 4 metodi che vanno benissimo, add(Object), get(int), size, remove(int). Con il JDK 1.5 i tipi elementari (int, long, boolean, ecc.) vengono direttamente racchiusi in oggetti (Integer, Long, Boolean, ecc.) che vengono accettati dal Vector. Con i JDK precedenti invece devi creare tu gli oggetti e poi inserirli nel Vector. Vedi tu, per me è molto comodo quando hai bisogno di lavorare su diversi dati.
    A presto
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

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.