列表包含另一个列表

时间:2013-07-27 08:32:43

标签: java

我的应用程序Customer中有一个对象,它有一个客户列表。

public class CustomerList
{
private List<Customer>
}

客户类依次列出他们在一周的某一天在商店购物的所有商品。

 public class Customer
{
private List<String> itemsOnMonday;
private List<String> itemsOnTuesday;
private List<String> itemsOnWednesday;
private List<String> itemsOnThursday;
private List<String> itemsOnFriday;
}

现在,我想获得客户在给定周内购买的所有商品的清单。做这个的最好方式是什么?我的同事建议我创建另一个列表,并将项目添加到此列表中。我不相信这是一个好方法。我有超过1000个客户,每个客户每周购物超过500件。他建议这样的事情 -

for(Customer customer:customerList)
{
List<String> items = new ArrayList<String>();
items.addAll(itemsOnMonday);
//So on until Friday.
}

这很疯狂,因为我最终会在for循环中创建超过1000个对象。有没有想过更好的方法呢?我们现在已经在脑力激荡了一段时间,并且无法想出实现这一目标的有效实施方案。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

如果对Customer项目使用guava Multimapenum怎么样:

public static enum Weekday { 
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

public class Customer {
    private Multimap<WeekDay, String> items = ArrayListMultimap.create();
    // getters, setters etc
}

然后:

// monday items:
customer.getItems().get(Weekday.MONDAY);

// week items:
customer.getItems().values();

答案 1 :(得分:0)

作为枚举的星期几,并使用EnumMap课程来存储已购买商品的列表:

EnumMap<Weeekday, List<String>> boughtItems;