Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java排序变量比较器_Java_Amazon S3_Comparison - Fatal编程技术网

Java排序变量比较器

Java排序变量比较器,java,amazon-s3,comparison,Java,Amazon S3,Comparison,我正在尝试根据用户输入对对象列表进行排序。如何让sort方法实现变量比较器 例如: List<S3ObjectSummary> objectSummaryList = getObjectSummaries(); objectSummaryList.sort(Comparator.comparing(S3ObjectSummary::getKey); List objectSummaryList=getObjectSummaries(); objectSummaryList.sort

我正在尝试根据用户输入对对象列表进行排序。如何让sort方法实现变量比较器

例如:

List<S3ObjectSummary> objectSummaryList = getObjectSummaries();
objectSummaryList.sort(Comparator.comparing(S3ObjectSummary::getKey);
List objectSummaryList=getObjectSummaries();
objectSummaryList.sort(Comparator.comparing)(S3ObjectSummary::getKey);
如何根据需要基于getKey/getModified/其他任意属性进行上述排序?

这将帮助您:

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);
    }
}));    
如果所有“键”都将链接到getter方法,则可以在函数中使用键/getter的静态映射:

注意:我们必须使用原始类型
Comparable
,因为我们不能使用不同的
函数
(即使所有getter将返回
Comparable
对象,
X
也会有所不同)


创建N个比较器,询问用户他想要使用哪一个,然后使用他选择的。dank,正是我想要的。
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)));