0

我有一个可以添加/删除图书对象的 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 个副本的用户生成警告,添加三个带有 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();

}
4

2 回答 2

1

我建议将 Map 与<String, List<Book>>. 其中字符串键是图书 ISBN,列表是具有 ISBN 的图书。

于 2011-05-23T18:00:42.727 回答
0

好吧,如果您不希望同一个 ISBN 出现多个警告,您可以 a) 对输入进行排序然后检查它(简单循环)或 b) 检查输出以确保它不包含给定 ISBN 的警告。

从性能的角度来看,排序应该更好(O(n log n + n)与O(n ^ 2)),并且您也不需要额外的内存来存储哈希表或其他东西。

于 2011-05-23T18:00:46.493 回答