我正在尝试根据用户输入对对象列表进行排序。如何使sort方法实现变体比较器?
例:
List<S3ObjectSummary> objectSummaryList = getObjectSummaries(); objectSummaryList.sort(Comparator.comparing(S3ObjectSummary::getKey);
如何根据需要根据getKey / getModified /其他任意属性进行上述排序?
如果所有“键”都将链接到getter方法,则可以在函数中使用键/ getter的静态映射:
注意:我们将不得不使用原始类型,Comparable因为我们不能使用不同的类型Functions<S3ObjectSummary, Comparable<T>>(即使所有的获取方法都将返回Comparable<X>对象,X也会有所不同)
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)));