Гуава: Как создать явный порядок из списка и одного элемента?
В Гуаве далиCollection
и элементe
типаE
что я знаю, находится в коллекции, яхотел бы создать кастомOrdering
что-то вродеe
сначала, а затем и остальная часть коллекции. Тем не менее, способ добраться туда кажется ужасно сложным:
Collection values = ImmutableList.of("apples", "oranges", "pears");
String first = "oranges";
List remainingValues = newArrayList(values); // this
remainingValues.remove(first); // seems
Ordering myOrdering = // very
Ordering.explicit(first, remainingValues.toArray( // complicated!
new String[remainingValues.size()])); // is there an easier way?
Что я'Я желаю что-то вроде этого:
Ordering.explicit(first);
(Я'хотел бы это отсортироватьfirst
в начале и сохраните порядок всех других элементов, но в документах говорится, что итоговый порядок будетClassCastException
для элементов, не указанных явно.)
Или вот так:
Ordering.explicit(first, values.toArray(/* etc */));
(Но это не получится, потому чтоfirst
будет дублирующим значением)
Кто-нибудь может придумать краткий способ делать то, что я хочу?
Кстати, это недолжен бытьOrdering
, это также может быть обходным путем для созданияIterable
в указанном порядке, но опять же, это очень сложно:
Iterable sorted = Iterables.concat(
ImmutableList.of(first),
Iterables.filter(values, not(equalTo(first))));