簡體   English   中英

Java-排序-變量比較器

[英]Java - Sort - Variable comparator

我正在嘗試根據用戶輸入對對象列表進行排序。 如何使sort方法實現變體比較器?

例:

List<S3ObjectSummary> objectSummaryList = getObjectSummaries();
objectSummaryList.sort(Comparator.comparing(S3ObjectSummary::getKey);

如何根據需要根據getKey / getModified /其他任意屬性進行上述排序?

如果所有“鍵”都將鏈接到getter方法,則可以在函數中使用鍵/ getter的靜態映射:

注意:我們將不得不使用原始類型Comparable因為我們不能使用不同的Functions<S3ObjectSummary, Comparable<T>> (即使所有吸氣劑都將返回Comparable<X>對象, X也會有所不同)

Map<String, Function<S3ObjectSummary, Comparable>> map = new HashMap<>();
map.put("key", s3 -> s3.getKey());
map.put("modified", s3 -> s3.getModified());
// other entries

然后使用:

objectSummaryList.sort(Comparator.comparing(map.get(compareByKey)));

這將幫助您:

String sortBy = "key";
list.sort(Comparator.comparing(report -> {
    try {
        return (Comparable) report.getClass().getDeclaredField(sortBy).get(report);
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException("exception", e);
    }
}));    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM