Guayaba: ¿Cómo crear un pedido explícito a partir de una lista y un solo elemento?

En guayaba, dada unaCollection<E> y un elementoe de tipoE que sé que está en la colección, me gustaría crear un personalizadoOrdering<E> que tipoe Primero y luego el resto de la colección. Sin embargo, la forma de llegar allí parece terriblemente complicada:

Collection<String> values = ImmutableList.of("apples", "oranges", "pears");
String first = "oranges";

List<String> remainingValues = newArrayList(values);  // this
remainingValues.remove(first);                        // seems
Ordering<String> myOrdering =                         // very
    Ordering.explicit(first, remainingValues.toArray( // complicated!
        new String[remainingValues.size()]));         // is there an easier way?

Lo que estoy deseando es algo como esto:

Ordering.explicit(first);

(Me gustaría que esto se ordenefirst al principio y retener el orden de todos los demás elementos, pero los documentos dicen que el Ordenamiento resultante arrojará unClassCastException para elementos no listados explícitamente.)

O así:

Ordering.explicit(first, values.toArray(/* etc */));

(Pero esto fallaría porquefirst sería un valor duplicado)

¿Alguien puede idear una forma concisa de hacer lo que quiero?

Por cierto, no tiene que ser unOrdering, también podría ser una solución para crear unIterable en la Orden especificada, pero de nuevo, esto es muy complicado:

Iterable<String> sorted = Iterables.concat(
                             ImmutableList.of(first),
                             Iterables.filter(values, not(equalTo(first))));

Respuestas a la pregunta(7)

Su respuesta a la pregunta