Hola;
Mas alla de que deberias asegurarte que el patron de ordenamiento se cumpla siempre ,o para
todos los elementos del conjunto.
Podes definir varias formas de comparar tenes las interfaces Comparator y Comparable.Donde
podes definir tu manera de comparacion para que despues sea usada en el sort.
Creo que la que mas te conviene es tener un Comparator por cada patron
Aca hay un tutorial muy simple
Comparable vs Comparator
Saudos.