我需要的是以自定義的方式排列列表,我正在研究正確的方法,並找到番石榴的排序API,但事情是,我訂購的列表並不總是相同的,我只需要2場是在列表的頂部,例如我有這樣的:使用部分顯式和其他順序排序?
List<AccountType> accountTypes = new ArrayList<>();
AccountType accountType = new AccountType();
accountType.type = "tfsa";
AccountType accountType2 = new AccountType();
accountType2.type = "rrsp";
AccountType accountType3 = new AccountType();
accountType3.type = "personal";
accountTypes.add(accountType3);
accountTypes.add(accountType2);
accountTypes.add(accountType);
//The order I might have is : ["personal", "rrsp", "tfsa"]
//The order I need is first "rrsp" then "tfsa" then anything else
我試圖用一個自定義的比較,並使用排序,番石榴庫中,這樣的事情:
public static class SupportedAccountsComparator implements Comparator<AccountType> {
Ordering<String> ordering = Ordering.explicit(ImmutableList.of("rrsp", "tfsa"));
@Override
public int compare(AccountType o1, AccountType o2) {
return ordering.compare(o1.type, o2.type);
}
}
但它會拋出一個異常,因爲顯式排序不支持不在你提供的列表中的其他項目,有沒有辦法做一個部分顯式的o訂貨信?像這樣:
Ordering.explicit(ImmutableList.of("rrsp", "tfsa")).anythingElseWhatever();
如果你剛在'AccountType'屬性('order' /'priority'),這將是'1'和'2'這兩個帳戶類型和'0'每一個其他類型的?然後你會定義主要基於該屬性的順序。 –
[Guava:如何從列表和單個元素創建明確的排序?]可能的副本(http://stackoverflow.com/questions/14403114/guava-how-to-create-an-explicit-ordering-from -a-list-and-a-single-element) –