Ale*_*lex 5 java comparator java-8
我有两个类扩展一个父类,并且有一个方法可以通过某个参数对数据进行排序.因此,对于这两个类中的一个,我需要应用一些排序,但是对于另外两个不做任何事情.有可能吗?
public class MedicalCompositeRatesData{
@Override
public List<RateTableData> buildData(RateTableInputBean inputBean)
{
SGQuotingData sgQuotingData = inputBean.getQuotingData();
List<ProductData> products = extractorFactory
.getProductExtractor(inputBean.getPlanType(), inputBean.getRatingType())
.extract(sgQuotingData);
List<Row> rates = products.stream()
.map(it -> buildRow(it, sgQuotingData))
.sorted(getProductComparator())
.filter(Objects::nonNull)
.collect(Collectors.toList());
return buildRateTables(rates);
}
protected Comparator<Product> getProductComparator(){
//should leave default sorting
}
}
public class AlternateCompositeRatesBuilder extends MedicalCompositeRatesData
{
protected Comparator<Product> getProductComparator(){
//will sort by rate
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
Stream.sort如果订购流,则进行稳定排序.换句话说,如果两个元素相等,那么它们将保持其初始排序.
因此,当您的流由a制作时List,您可以简单地使所有元素相等:
protected Comparator<Product> getProductComparator() {
return (a1, a2) -> 0;
}
Run Code Online (Sandbox Code Playgroud)
虽然这看起来不是很酷,但它应该做的工作.
| 归档时间: |
|
| 查看次数: |
898 次 |
| 最近记录: |