通过Java中的属性对数组进行排序

时间:2014-08-10 00:47:07

标签: java arrays sorting

我有一个Java对象数组。我们说Product products[]

每种产品都有价格,例如product.getPrice()

我可以通过价格订购该产品阵列的最佳方式是什么,所以我可以致电products[0]获取最贵的产品,products[products.length-1]获取最便宜的产品?

3 个答案:

答案 0 :(得分:4)

这样的事情:

Arrays.sort(products, new Comparator<Product>() {

    @Override
    public int compare(Product p1, Product p2) {
        if (p1.getPrice() > p2.getPrice()) return -1;
        if (p1.getPrice() < p2.getPrice()) return 1;
        return 0;
    }

});

答案 1 :(得分:1)

我建议使用ArrayList来执行此操作。使用for循环从最昂贵到最便宜的顺序索引它们,如下所示:

ArrayList products = new ArrayList();
final int MAX_PRICE = 9999; // Or whatever the maximum price should be
for (int i = MAX_PRICE, i > 0, i--) {
    if (product.getPrice() == i) {
        products.add(product);
    }
}

答案 2 :(得分:0)

您还可以使用可比较界面覆盖 compareTo 方法,将模板T覆盖为产品。 然后使用以下代码

Collections.sort(products);

您始终可以使用Oracle文档了解docs.oracle.com

中的可比接口