如何按照我的预定义顺序对集合进行排序?

How to sort collection in my pre-defined order?

例如,我有下一个字符串列表:

List<String> s = newArrayList("string", "someString", "anotherStr", "yetAnotherString", "Something");

我需要用特殊的方式排序,例如: yetAnotherString, someString, anotherStr, 字符串, So​​mething

所以没有字母顺序或字典顺序,在伪代码中它会像:

if (el == yetAnotherString)
{
 set order 1;
}
else if (someString)
{
 set order 2;
} ....

java 集合或 guava 允许进行这样的排序吗?

如果存在这样的顺序,那么您应该可以用 Comparator 来表达它,即:给定两个元素来决定它们的顺序。一旦这样做,您就可以将 Comparator 传递给排序方法

Collections.sort(list,comparator);

如果你有一个列表,其中包含你想要的元素的顺序,那么 Guava 提供了 Ordering.explicit;您可以传递元素的顺序,然后将其用作 Comparator 进行排序。