Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - java creare nuova struttura dati
Forum - Java - java creare nuova struttura dati

Avatar
ilciolla (Normal User)
Newbie


Messaggi: 10
Iscritto: 24/02/2007

Segnala al moderatore
Postato alle 15:35
Venerdì, 06/02/2009
Ciao ragazzi il post precedente era un po troppo vago percio ho deciso di farne uno nuovoù:


Ho bisogno di sapere come posso creare una nuova struttura dati in java.

Nel senso che devo fare un progetto nel quale mi viene richiesto di non utilizzare le strutture dati delle API di java .

Pero mi viene richiesto di creare un implementazione di un oggetto Insieme come array di interi con dimensioni massime limitate solo dalla memoria disponibile.

Come posso fare ?

un idea era quella di creare un oggetto simile ai Vector delle API no?
ma come si fa?

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 18:49
Venerdì, 06/02/2009
ti ho risposto nell'altro:

http://www.pierotofy.it/pages/extras/forum/viewtopic.php?i ...=

ora l'ho chiuso e continuiamo qui.

Per farlo crei un array di int di dimensione x, e mano a mano che uno aggiunge gli x quando arrivi alla fine della sua dimensione riallochi con new il vettore e gli dai una dimensione grande il doppio di prima. Vector se non sbaglio funziona così.

PM Quote
Avatar
ilciolla (Normal User)
Newbie


Messaggi: 10
Iscritto: 24/02/2007

Segnala al moderatore
Postato alle 14:12
Sabato, 07/02/2009
Ok ad esempio io ho creato la mia classe:


Codice sorgente - presumibilmente Java

  1. class Vettore {
  2.     private Object[] elementi;
  3.     private int dimensione;
  4.  
  5.     public Vettore(int capacitaIniziale) {
  6.         elementi = new Object[capacitaIniziale];
  7.     }
  8.  
  9.     public void add(Object elem) {
  10.         assicuraCapacita(dimensione+1);  // ho bisogno di 1 elemento in più
  11.         elementi[dimensione++] = elem;
  12.     }




Pero ad esempio se io creo una funzione resize() che nel caso ci siano aggiunte da fare mi rialloca lo spazio raddoppiando il mio array ....Se per caso finisce la memoria viene lanciata un eccezzione automaticamente oppure devvo mettere un try catch da qualche parte?

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 18:51
Sabato, 07/02/2009
tu non dovresti mettere try catch, quando fai una classe di questo tipo devi mettere i throws nella dichiarazione e far gestire i potenziali errori all'utente della classe.

Per il discorso di gestire l'esaurimento delle memoria del pc non sono mai giunto a tali situazioni, potresti guardare la classe Vector originale cosa fa o vedere su google qualcosa, ho trovato questo al caso: http://www.onjava.com/pub/a/onjava/2001/08/22/optimization ...

Quello che dovrebbe fare il tuo codice è contare gli elementi inseriti, e vedere che se è stato inserito l'ultimo elemento possibile la memoria disponibile va raddoppiata, per fare questo ricordati che devi creare un secondo vettore in cui salvare l'attuale array, riallocare con new l'array principale e poi, partendo dal vecchio vettore, ritravasare i vecchi dati nel nuovo vettore più grande. Per fare questo ti sarà utile System.arraycopy

PM Quote