我有一堆方法基本上做同樣的事情:根據不同方法返回的值選擇類的頂部N例項,所有返回雙值.
例如,對於實現以下介面的類的物件:
interface A {
Double getSalary();
Double getAge();
Double getHeight();
}
我想選擇每個方法返回的值最高的N物件.
現在我有3種方法:
List<A> getTopItemsBySalary(List<A> elements);
List<A> getTopItemsByAge(List<A> elements);
List<A> getTopItemsByHeight(List<A> elements);
這個機構:
List<A> getTopItemsBySalary(List<A> elements, int n) {
return elements.stream()
.filter(a -> a.getSalary() != null)
.sorted(Comparator.comparingDouble(A::getSalary).reversed())
.limit(n)
.collect(Collectors.toList());
}
如何傳遞方法,只有一個方法?