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

    Collezione immutabile di oggetti generici

    Buongiorno a tutti! Questo è il mio primo post qui e subito vi piazzo un bel quesito a cui ancora non riesco a dare una soluzione.

    Premetto che questa è una traccia di un esercizio di un esame che dovrò sostenere tra una settimana ( ma ,purtroppo NON è l'esercizio che farò tra una settimana )

    Si richiede il progetto di un tipo di dato CollezioneDinamicaImmutabile (CDI) che
    rappresenta collezioni dinamiche ma non mutabili di oggetti generici: ogni aggiunta o rimozione di
    un elemento da una collezione C richiede la creazione di una nuova collezione che differisce da C per un elemento. /* ... */ È lasciata libera scelta circa la gestione della omogeneità/disomogeneità (di tipo)
    degli elementi della collezione.
    Si richiede che il costruttore di tale classe prenda in input una generica collezione dotata di iteratore.
    Il problema sta nell'immutabilità della classe che devo costruire! Penso che una soluzione adatta sia l'utilizzo di clone() per effettuare una deep copy dell'oggetto...Ma il dubbio atroce che mi perseguita è questo: visto che la collezione di oggetti che passo al costruttore di CDI può contenere qualsiasi tipo di oggetto, potrebbe contenere anche un riferimento ad un'altra collezione ( ed inoltre questa situazione si potrebbe ripetere all'infinito con ogni collezione ).
    Come faccio io a capire quando fermarmi nell'utilizzare clone() ? esiste un modo per riconoscere se un oggetto in una collezioneè a sua volta un'altra collezione (che quindi richiederebbe un clone() di ogni signolo suo elemento)?

    Vi ringrazio per la disponibilità!

    Christian.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    9
    devi instanziare solo nuovi oggetti della tua cdi. Quello che contengono va passato come riferimento non clonato.

    quindi una add diventerebbe:

    public CDI<E> aggiungi(E elem){
    CDI<E> cdi= new CDI<E>(this);
    cdi.accoda(E); //accoda magari è un metodo privato per aggiungere alla struttura dati l'elemento elem
    return cdi;
    }

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.