2016-01-24 92 views
1

例如,我有一个字符串的下一个列表:如何按我的预定义顺序对收集进行排序?

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

我需要它以特殊的方式进行排序,例如: yetAnotherString,someString,anotherStr,串,东西

所以没有字母或词典排序,在伪代码,它会喜欢:

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

做java集合或番石榴允许做这样的排序?

+0

如果仔细阅读,您会发现最后一个代码块是伪代码,请勿比较字符串与'==',而是'等于' – Dici

+0

@Dici。虽然它不会使你的建议不那么有用,谢谢:) –

回答

3

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

Collections.sort(list,comparator); 
+0

所以,我需要为彼此之间的所有元素写关系? –

+0

如果您已经知道排序顺序是什么,那么直接将它们添加到数组列表中。为什么要比较它们呢?所以为什么比较? –

+0

@premkumar此arraylist我给了一个例子,其实有一个困难的逻辑,所以我不能直接把它,我需要在获得清单后订购 –

4

如果你想以什么顺序,然后番石榴提供Ordering.explicit哪些元素的列表;您可以传递元素的顺序,然后使用它作为Comparator进行排序。

相关问题