小编典典

Java-排序-变量比较器

java

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

例:

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

如何根据需要根据getKey / getModified /其他任意属性进行上述排序?


阅读 230

收藏
2020-12-03

共1个答案

小编典典

如果所有“键”都将链接到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)));
2020-12-03