有条件的JAVA迭代器

时间:2016-01-25 12:43:34

标签: java interface iterator

我想使用Interface Iterator以指定顺序迭代列表。 在这种情况下,我想以降序product.prize顺序迭代列表(listofproducts)。

bin/nutch crawl <urlDir> [-solr <solrURL>] [-dir d] [-threads n] [-depth i] [-topN N]

我有一个公共方法来获得价格。 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

如果数据量不是太大,您可以在不考虑性能的情况下执行以下操作:

List<Product> sortList = new ArrayList<>(origList);
Collections.sort(sortList, new Comparator<Product>() {
    @Override
    public int compare(Product arg0, Product arg1) {
        return (int)(arg1.getPrice() - arg0.getPrice());
    }
});

这将创建原始列表的副本,该副本将由比较器排序。之后,迭代sortList将按price(降序)

排序

答案 1 :(得分:2)

您应该使用Comparable<T>界面来实现您的比较逻辑

 class Product implements Comparable<Product>{

    private static int count = 0;

    private int code;
    private String name;
    private String description;
    private Double price;


    @Override
    public int compareTo(Product p) {
        return price.compareTo(p.getPrice());
    }
}

现在要对列表进行排序,您只需使用:

Collections.sort(listOfProduct);

答案 2 :(得分:0)

实现这一目标有两种方法。使用Comparator它很容易使用,您应该创建接口Comparator的新实现,然后实现compare和equals方法。它非常强大,因为您可以创建几个比较器来在不同的字段中进行排序。

您也可以将Product作为Comparable,然后实现compareTo方法。

您可以看到sample with camparator and comparable interfaces

相关问题