這裏有幾種可能性。對於Apache ComparatorChain
,請閱讀documentation。您必須爲您希望的每個訂單實施比較器,這裏是SeasonComparator
,RegionComparator
和CategoryComparator
。
對於ComparatorChain
,實例並添加其他的後一個比較:
ComparatorChain<Recipe> chain = new ComparatorChain<>();
for (String elt : sortLevelChain.split("\.")) {
if (elt.equals("Season")) chain.addComparator(new SeasonComparator());
else if (elt.equals("Region")) chain.addComparator(new RegionComparator());
else if (elt.equals("Category")) chain.addComparator(new CategoryComparator());
else throw new IllegalArgumentException("Comparator not supported");
}
Collections.sort(recipeList, chain);
使用相當簡單,但如果你經常需要這個鏈接的比較,您可以優化該方法。
你在說什麼「動態排序」? –
將字符串拆分爲「。」。然後http://stackoverflow.com/questions/4135998/java-comparator-given-the-name-of-the-property-to-compare –