我们说我有一个名为Product
的课程,字段为price
和weight
。
我的最终目标是列出我可以按价格或重量排序的产品清单
我知道我可以Product implements Comparable<Product>
。这意味着我将不得不,例如:
@Override
public int compareTo(Product compareProduct) {
int comparePrice = ((Product) compareProduct).getPrice();
//ascending order
return this.price - comparePrice;
}
此代码仅按价格进行比较,因此,简而言之,问题是如何选择我想要使用的比较方法? (byPrice或byWeight)
答案 0 :(得分:3)
在运行get()
时,您可以将实现Comparator
的类用作参数:
Collections.sort()
然后根据你想要的比较器排序:
static class PriceComparator implements Comparator<Product> {
public int compare(Product p1, Product p2)
{
return p1.getPrice().compareTo(p2.getPrice());
}
}
static class WeightComparator implements Comparator<Product> {
public int compare(Product p1, Product p2)
{
return p1.getWeight().compareTo(p2.getWeight());
}
}