我的应用程序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个对象。有没有想过更好的方法呢?我们现在已经在脑力激荡了一段时间,并且无法想出实现这一目标的有效实施方案。任何帮助将不胜感激。
答案 0 :(得分:5)
如果对Customer
项目使用guava Multimap
和enum
怎么样:
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;