我有一个可以添加/删除Book对象的ShoppingCart应用程序 一本书有一个isbn属性。 我需要检查是否有人将同一本书的副本添加到购物车 即,
Book b1 = new Book("isbn222");
Book b2 = new Book("isbn222");
Book b3 = new Book("isbn333");
Book b4 = new Book("isbn444");
Book b5 = new Book("isbn444");
Book b6 = new Book("isbn444");
Book b7 = new Book("isbn555");
//add these to cart
在这种情况下,我想向用户生成警告,该警告使用isbn222复制2份副本,并添加3份带有isbn444的副本。 我想过如下创建一个CartValidator,但是,我无法实现下面给出的逻辑。你如何在java中创建子列表? 对此有任何帮助。
感谢
标记。
public class CartValidator {
public static String validate(ShoppingCart<Book> cart) {
StringBuffer warning = new StringBuffer("duplicates");
List<Book> items = cart.getItems();
/*
* take first item from list, temp= items.get(0)
* check against all the rest for duplicates and build warning compare with item1,item2..
* take second item temp= items.get(1)
* check against all the rest for duplicates and build warning compare with item2,item3..
*/
return warning.toString();
}
答案 0 :(得分:1)
我建议使用<String, List<Book>>
制作地图。其中字符串键为书籍ISBN,列表是带有ISBN的书籍。
答案 1 :(得分:0)
如果您不希望对同一个ISBN发出多个警告,您可以a)对输入进行排序然后检查(简单循环)或b)检查输出以确保它不包含警告给定ISBN。
从性能的角度来看,排序应该更好(O(n log n + n)与O(n ^ 2))并且您也不需要额外的内存用于散列表或其他东西。