2016-01-24 66 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進行排序。

相關問題