我想使用Interface Iterator以指定顺序迭代列表。 在这种情况下,我想以降序product.prize顺序迭代列表(listofproducts)。
bin/nutch crawl <urlDir> [-solr <solrURL>] [-dir d] [-threads n] [-depth i] [-topN N]
我有一个公共方法来获得价格。 我该如何解决这个问题?
答案 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方法。