使用比较器代替比较方法

时间:2019-04-03 13:15:49

标签: java comparator

我有这种情况:

Stock.stream
.max(this::my_method)
.map....

public int my_method(Stock stock1, Stock  stock2) {
    int total1 = get_sum(stock1);
    int total2 = get_sum(stock2);

    if (total1 == total2) {
        return stock1.get_quantity() - stock2.get_quantity();
    }
    return total1 - total2;
}

 public Integer get_sum(Stock stock) {
    return stock.get_quantity() - stock.get_wasted();
}

是否有一种使用Java Comparator编写它的方法,或者是否适合其他一些场合?

1 个答案:

答案 0 :(得分:0)

您可以将Comparator与lambda一起使用。例如。如果您具有以下课程:

class Stock {
   int price;
}

您可以将max与使用price的比较器一起使用,例如:

List<Stock> stocks; //list
Stock max = stocks.stream()
    .max(Comparator.comparing((a) -> a.price))
    .get();