Siguiendo con lo que te había propuesto los pasos a dar serían los siguientes:
Primero, crea tres clases (o las que te hagan falta) que implementen la interface comparator tal y como se explica en:
https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=599:interface-comparator-del-paquete-javautil-api-de-java-ejercicios-y-ejemplos-resueltos-cu00915c&catid=58:curso-lenguaje-programacion-java-nivel-avanzado-i&Itemid=180Ponle el nombre que tú veas conveniente (yo voy a suponer que se llaman comparadorCriterio1, comparadorCriterio2 y comparadorCriterio3)
Fíjate que no tienes que crear tres compareTo en la misma clase, sino tres clases distintas.
Segundo, crea tres treeset para contener los datos, cada uno creado con una instrucción del tipo:
SortedSet<TipoDelObjeto> nombreObjeto = new TreeSet<TipoDelObjeto>(new comparadorCriterio1());
Harías igual para criterio 2 y criterio 3.
Ahora ya tendrías 3 treeset ordenados con distintos criterios.
Según la búsqueda que se quiera usar, emplear el método contains aplicado a la estructura de datos (treeset) correspondiente.
Te aconsejo que primero hagas una prueba sencilla, un programa pequeño de prueba, antes de generar un programa complejo. Sería un programa donde simplementes tengas los tres treeset y muestres por pantalla cómo introduciendole los mismos datos te los ordena de distinta manera. Como te dije en el mensaje anterior si vas poniendo el código intento echarle un vistazo y comentarte algo.
Tienes más información sobre TreeSet aquí:
https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=610:interfaces-set-y-sortedset-del-api-java-clases-hashset-y-treeset-ejemplo-diferencias-cu00921c&catid=58:curso-lenguaje-programacion-java-nivel-avanzado-i&Itemid=180Saludos!