listas dobles

que tal, el problema que tengo es el siguiente, espero poder recibir orientación sobre como resolver esto.
hago una consulta a la BD, el resultado lo meto en una lista esta lista del tipo Personas y personas tiene sus metodos setter y getters, clave, nombre etc.
ahora lo que quiero hacer es formar grupos de 3 personas pero tienen que ser entre los integrantes y solo puede ser de la siguiente forma.
clave - nombre + todos los de mas datos, algo asi
1- pedro, [...] , 2- juan, [...] , 3- beto, [...] , 4- martha, [...]

1 - juan 2- beto 3-martha 4-pedro
1 - beto 2- martha 3-pedro 4-juan
1- martha 2- pedro 3-juan 4-beto

aqui el problema es como saltar al inicio de la lista cada que sea requerido ya que pueden llegar n registros, agradeceria cualquier indicio de como comenzar a resolver este problema ya que por mas que lo pienso no doy como brincar cada que sea requerido del final de la lista al incio

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.
Imagen de ezamudio

un iterador circular?

No te serviría implementar un iterador circular que puedas inicializar en cualquier posición del arreglo?

Elimina el primero y agregalo al final

Pues yo hice una lista LinkedList<String> cosa = new LinkedList<String>(); y despues la llene de datos "a", "b", "c", "d", "e", "f" y finalmente e algoritmo es: toma los primeros 4 y despues el primero pasalo al ultimo

cosa.offer(cosa.pollFirst());

y asi solo tienes que cuidarte de que la lista sea mayor o igaul de longitud que el numro de registros que pintas