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

时间:2016-01-24 11:42:19

标签: java sorting collections guava

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

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

我需要以特殊方式对其进行排序,例如: yetAnotherString,someString,anotherStr,string,Something

所以没有字母顺序或词典排序,在伪代码中它是:

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

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

Collections.sort(list,comparator);