我的应用程序Customer中有一个对象,其中包含一个客户列表.
public class CustomerList
{
private List<Customer>
}
Run Code Online (Sandbox Code Playgroud)
客户类依次列出他们在一周中的某一天在商店购物的所有商品.
public class Customer
{
private List<String> itemsOnMonday;
private List<String> itemsOnTuesday;
private List<String> itemsOnWednesday;
private List<String> itemsOnThursday;
private List<String> itemsOnFriday;
}
Run Code Online (Sandbox Code Playgroud)
现在,我想获得客户在一周内购买的所有商品的清单.做这个的最好方式是什么?我的同事建议我创建另一个列表,并将项目添加到此列表中.我不相信这是一个好方法.我有超过1000个客户,每个客户每周购物超过500件.他建议这样的事情 -
for(Customer customer:customerList)
{
List<String> items = new ArrayList<String>();
items.addAll(itemsOnMonday);
//So on until Friday.
}
Run Code Online (Sandbox Code Playgroud)
这很疯狂,因为我最终会在for循环中创建超过1000个对象.有没有想过更好的方法呢?我们现在已经在脑力激荡了一段时间,并且无法想出实现这一目标的有效实施方案.任何帮助都感激不尽.
小智 5
怎么样用guava Multimap和enumfor Customer的项目:
public static enum Weekday {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class Customer {
private Multimap<WeekDay, String> items = ArrayListMultimap.create();
// getters, setters etc
}
Run Code Online (Sandbox Code Playgroud)
然后:
// monday items:
customer.getItems().get(Weekday.MONDAY);
// week items:
customer.getItems().values();
Run Code Online (Sandbox Code Playgroud)