在HashSet中传递方法是一个好习惯,就像我直接在HashSet中传递方法一样?
设置byPrice = new HashSet(getProductsByPriceFilter( lowPrice,highPrice)); **
public Set<Product> filterProducts(BigDecimal lowPrice,
BigDecimal highPrice, String manufacturer, String category) {
Set<Product> byPrice = new HashSet<Product>(getProductsByPriceFilter(
lowPrice, highPrice));
Set<Product> byManufacturer = new HashSet<Product>(
getProductsByManufacturer(manufacturer));
Set<Product> byCategory = new HashSet<Product>(
getProductsByCategory(category));
byPrice.retainAll(byManufacturer);
byPrice.retainAll(byCategory);
return byPrice;
}
答案 0 :(得分:2)
有人想到这一点:如果你的方法已经返回了可以填满整个Set的东西 - 为什么没有方法返回那个Set?
Set<Product> byPrice = getProductsByPriceFilter(
lowPrice, highPrice));
有些
public Set <Product> getProductsByPriceFilter(double low, double high) {
与其他过滤器相同。
或者......将已经过滤的集合传递到下一阶段。您可能会在getProductsByManufacturer ()
中对所有产品进行循环。如果您已将已过滤的集合添加为参数,则可以减少此循环以循环所有已在价格范围内的产品,依此类推。