在java中过滤集合

时间:2012-03-13 14:33:56

标签: java collections filtering

我正在尝试根据付款方式过滤以下购物车。 购物车包含组列表,其中包含商品列表和商品列表的付款方式。

现在,我想要所有带付款方式的商品都作为信用卡提供。有没有更好的方法来过滤它而不是通过嵌套循环运行。

public class PaymentType {
    private String paymentType;
}

public class Items {
    private Integer itemId;
    private List<PaymentType> paymentOptions;
}

public class Group {
    private Integer sellerId;
    private List<Items> itemList;
}

public class Cart {
    private Integer cardId;
    private List<Group> group;
}

谢谢,

-Vijay

3 个答案:

答案 0 :(得分:1)

这取决于你的意思更好。

您可以维护一个存储此信息的HashMap。这样可以避免使用循环,但这意味着您必须维护一个数据结构,这会增加复杂性并且总体上可能会更慢,具体取决于您的使用方式。

如果没有更多信息,我会采用最简单/最短的方法来使用循环。

答案 1 :(得分:0)

我会在每个类中添加方法来查找您感兴趣的对象,例如每个List<Item> findItemsByPaymentType(PaymentType paymentType)Group的方法Cart。然后,Cart中的那个将为其每个组实例调用Group类上的那个,然后在一个组合列表中收集所有单个组结果。

这仍然意味着你必须实现循环,但它将在每个类中以一种漂亮和干净的方式完成。更容易测试,更容易重复使用。

答案 2 :(得分:0)

一种方法是使用一些常用方法使PaymentType抽象化。然后创建诸如CreditCardPayment extends PaymentType之类的子类,这将使您能够执行以下操作:

for(CreditCardPayment payment : payments)  
{  
    ccpList.add(payment);  
}