Quindi gli oggetti Utente, Data, Tipologia per un medesimo indice sono correlati tra di loro? La questione allora è a monte .. a livello di "design". La domanda semplice è: perché hai voluto (o dovuto) modellare le cose così??
Non c'è nulla da portarsi dietro .... bisognerebbe modellare diversamente (e meglio) i dati.
Questo codice che hai scritto non ha nemmeno senso. Iteri su listaDate e per ogni elemento ordini l'intera listaDate su cui stai iterando! Non ha proprio senso.