4

我的应用程序中有一个对象 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 个对象。关于更好的方法来做到这一点的任何想法?一段时间以来,我们一直在进行头脑风暴,但无法提出有效的实施方案来实现这一目标。任何帮助都感激不尽。

4

2 回答 2

5

使用guava MultimapenumforCustomer的物品怎么样:

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();
于 2013-07-27T08:47:06.647 回答
0

当前星期几作为枚举并使用EnumMap类来存储购买物品的列表:

EnumMap<Weeekday, List<String>> boughtItems;
于 2013-07-27T11:04:06.907 回答