假设我有一个名为 Product
的类(class),字段 price
和weight
.
我的最终目标是拥有一个可以按价格或重量排序的产品列表
我知道我可以做Product implements Comparable<Product>
。这意味着我必须,例如:
@Override
public int compareTo(Product compareProduct) {
int comparePrice = ((Product) compareProduct).getPrice();
//ascending order
return this.price - comparePrice;
}
这段代码只会按价格进行比较,所以,简而言之,问题是我如何选择我想要使用的比较方法? (按价格或按重量)
最佳答案
您可以创建实现 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());
}
}
然后根据您想要的比较器进行排序:
Collections.sort(productList, new PriceComparator());
...
Collections.sort(productList, new WeightComparator());
关于java - 通过两个参数对 Java 列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39437523/