1)introdurre una nuova classe avente per attributi ArrayList<Classe1> p e ArrayList<Classe2> t
2)introdurre in Classe1 un attributo ArrayList<Classe2>p e in Classe2 un attributo ArrayList<Classe1>t
3)soluzioni migliori?
Allora, introdurre una nuova classe con variabili di istanza ArrayList<Class1> p, ArrayList<Class2> t
mi sembra un soluzione migliore della 2.
Perchè la seconda introduce più dipendenza e se un giorno modificherai il programma (aggiornandolo ad esempio), sarà più complicato farlo se scegli la soluzione 2 (cioè quella di introdurre in Classe1 un attributo ArrayList<Classe2>p e in Classe2 un attributo ArrayList<Classe1>t).
Questa scelta è anche quella verso la quale mi ha indirizzato l'università e i libri che ho letto.
Poi ci sono soluzioni migliori?
Credo che dipenda da programma a programma.. mi spiego meglio, un'altra soluzione che mi viene in mente è di seguire il modello dell' ADT (Abstract Data Types) cioè riorganizzare il tutto in interfacce, classi astratte e infine classi concrete. Ma siccome sono due classi, non conviene se invece è un programma che andrai a sviluppare nel tempo, questa è un opzione da considerare.
A conti fatti, ti consiglio la soluzione 1)
Per qualsiasi dubbio o critica, posta pure!
ciao