compartor的简单使用

用于排序

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)));

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));
    };
发布了25 篇原创文章 · 获赞 0 · 访问量 547

猜你喜欢

转载自blog.csdn.net/weixin_43343786/article/details/105194243