2
我想使用Lambda表達式進行排序,但問題是我無法按正常順序排序(例如1,2,3, 4)。我需要以另一種順序排序(例如2,1,3,4)。 有沒有辦法使用Lambda表達式來做到這一點?
這裏是我想轉換爲Lambda表達式的代碼(如果可能):
發現我可以用Lambda表達式比較/排序固定,非自然順序的有限值
private static Comparator<Card> bySuit = new Comparator<Card>() {
public int compare(Card c1, Card c2) {
int this_suit = c1.getSuit().value();
int other_suit = c2.getSuit().value();
if((this_suit == 2 && other_suit == 1) || (this_suit == 1 && other_suit == 2)){
return other_suit - this_suit;
}
return this_suit - other_suit;
}
};
編輯:
private static Comparator<Card> bySuit = (c1, c2) -> {
int this_suit = c1.getSuit().value();
int other_suit = c2.getSuit().value();
if((this_suit == 2 && other_suit == 1) || (this_suit == 1 && other_suit == 2)){
return other_suit - this_suit;
}
return this_suit - other_suit;
};
但有一個更好的辦法?
那麼,除了前兩個元素,還是隻有具有某些特定值的元素,你想要有自然順序?例如,應該是結果還是排序'3,4,5,6'? – Pshemo 2015-02-23 03:53:18
@pshemo只有一些具有特定值的元素。 – Mark 2015-02-23 03:57:50