Ordenar objetos por 2 o mas atributos

Hola ! tengo una duda aver ke como me podeis exar una mano

Tengo un arraylist de objetos con varios parametros entre ellos:

 

Por ejemplo una lista de 100 usuarios y quiero ordenarlos por edad,luego prioridad, por paises y luego por su ciudad y orden alfabetico,todo ello en una sola lista.

Ej:
-------------------------------------------------------------
Pepe | 22 | Alta | Albania | Tirana
-------------------------------------------------------------
Aaron | 23 | Alta | España | Cordoba
-------------------------------------------------------------
Rodri | 23 | Alta | España | Cordoba
-------------------------------------------------------------
Rodri | 23 | Alta | España | Jaen
-------------------------------------------------------------
Juan | 23 | Baja | España | Vitoria
-------------------------------------------------------------

¿Como podria hacerlo de la forma mas facil y profesional? Un saludo amigos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

La clase Collections tiene un

La clase Collections tiene un método sort que recibe la lista y un comparador.

En este comparador puedes especificar que cosa va antes que otra.

Puedes tener una instancia de este comparador y pasarselo a la lista cuando lo necesites.

 

Creo que ese código aún puede mejorar, ahorita no se me ocurre como, pero lo que sí tengo claro es que prefiero regresar el valor tan pronto lo tengo a tener que anidar if's

Saludos.

Imagen de Payan

gracias OscarRyz ! voy

gracias OscarRyz ! voy hacerlo y os comento ok. un saludo

Imagen de Payan

Me falta algo y no se como solucionarlo!Ayuda! please!

 

clase Usuario

 

Creo una clase para almacenar los usuarios.

 

 
Lo he ordenado en este caso solo por un atributo ,en este caso por edad,pero sigue sin salirme ... el ordenarlo luego por nombre u pais.
Lo he hecho algo mas simple y he eliminado el metodo comparaPrioridad.
ya luego cuando lo entienda ,lo agrego,pero de momento no lo entiendo muxo,ya he conseguido ordenar por un atributo,pero sigo sin sacar por dos, el metodo que me pasaste de compareTO no se como utilizarlo para llamarlo en el collection.sort porque ahi me devuelve resultado que es un int y el metodo que yo tengo me devuelve el objeto
¿como utilizo el resultado para ordenar luego los objetos?

un saludo.

Te paso la clase leer para que puedas probarlo si lo deseas
 

Espero que me aclareis como realizarlo o si lo he planteado mal y lo debo hacer de otra forma.Un saludo.

Comparar prioridad es otro

Comparar prioridad es otro método. Crealo y que te devuelva 0 si tienen la misma prioridad -1 si uno tiene más que otroa o 1 si tienen menos que otra (

Algo como:

 

Revisa la firma de Collections.sort, no recibe un arraylist, sino una lista (creo) Intenta con:   en última instancia lee el mensaje de error y trata de entender que te está diciendo el compilador.

Además lo que tienes que poner el la lista que quieres ordenar ( el vector de usuarios )

Imagen de Payan

gracias me pongo a ello.haber

gracias me pongo a ello.haber ke tal me sale. un saludoo

Imagen de Payan

He corregido el codigo ,te he

He corregido el codigo ,te he pasado el codigo entero.
Logro ordenar el arraylist de objetos por cualquiera de los parametros.pero solo uno.no dos ni mas.
He intendo luego guardar ese arraylist de objetos en otro arraylist de objetos y luego ordenarlo por otro
parametro pero no respeta como estaba ordenado anteriormente como es logico..
el metodo que devuelve
el resultado.,que es este:
 

" no se como utilizarlo....para luego ordenar el arraylist de objetos segun ese metodo ".

Mmhh pues no te entendí muy

Mmhh pues no te entendí muy bien, pero acá esta un ejemplo de como si funciona ordenando por varios criterios

Por ejemplo, cuando el nombre, la edad, y el pais son el mismo, se toma en consideración la ciudad.

 
Salida:

 

Si quisieras ordenar primero por ciudad, tendrías que ponerlo (en otro comparador) al principio:

 

Ya no leí el reste de tu código sobre como capturas los datos porque creo que no viene mucho al caso. Haz que funcione primero con datos fijos (como en mi ejemplo) y cuando hayas dominado esa parte puedes seguir con otras.

Espero que esto te ayude.

Imagen de Payan

Muchas gracias por ayudarme

Muchas gracias por ayudarme con esto y aplicar tu tiempo a resolverme estas dudas,me pongo con ello ahora mismo
un saludo amigo!