用于排序
lamda使用
Collections.sort(currPairs, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return containsIndex(t0Currency,o1).compareTo(containsIndex(t0Currency,o2));
}
});
-----
currPairs.sort((String o1,String o2)->containsIndex(t0Currency,o1).compareTo(containsIndex(t0Currency,o2)));
或者
Collections.sort(lst, (s1, s2) -> {
return s2.getUpdateTime().compareTo(s1.getUpdateTime());
});
private static final String Format = "%d %s";
private final Comparator<FXAccount> FXAccountComparator = (a1, a2) -> {
FXAccount defaultFxPbAccount = getDefaultFxPbAccount();
//defaultFxPbAccount 放前面
int val1 = a1.getAccount_id().equals(defaultFxPbAccount.getAccount_id()) ? 1 : 2;
int val2 = a2.getAccount_id().equals(defaultFxPbAccount.getAccount_id()) ? 1 : 2;
return String.format(Format, val1, a1.getAccount_id().toString()).compareTo(
String.format(Format, val2, a2.getAccount_id().toString()));
};
使用
Collections.sort(nop.getBrokerAccount(), FXAccountComparator);
pairs.sort(Comparator.comparing(o -> o.v));
Collections.sort(list, new Comparator<Total>() {
@Override
public int compare(Total t1, Total t2) {
return t1.getCcy().compareTo(t2.getCcy());
}
});
更详细的使用
private static final String TradeFormat = "%d %d %s %d %s %d";
/**
* roll account tadeid
*/
private static final Comparator<Trade> TradeComparator = (t1, t2) -> {
//roll 放前面
int rollVal1 = StringUtils.isNotBlank(t1.getRollTradeId()) ? 1 : 2;
int rollVal2 = StringUtils.isNotBlank(t2.getRollTradeId()) ? 1 : 2;
//account
long accountId1 = t1.getAccount_id(),
accountId2 = t2.getAccount_id();
String prefix1 = getRemarkPrefix(t1);
String prefix2 = getRemarkPrefix(t2);
String tradeId1 = t1.getDeal_id();
String tradeId2 = t2.getDeal_id();
int isCash1 = TradeEntryConstant.TradeType.CashSettlement.getValue().equals(t1.getTradeType()) ? 1 : 0;
int isCash2 = TradeEntryConstant.TradeType.CashSettlement.getValue().equals(t2.getTradeType()) ? 1 : 0;
long valueDate1 = t1.getSettlement_date() != null ? t1.getSettlement_date().getTime() : 0;
long valueDate2 = t2.getSettlement_date() != null ? t2.getSettlement_date().getTime() : 0;
return String.format(TradeFormat, rollVal1, accountId1, prefix1, isCash1, tradeId1, valueDate1).compareTo(
String.format(TradeFormat, rollVal2, accountId2, prefix2, isCash2, tradeId2, valueDate2));
};