в корзине разрешено дублирование товара, но нужно предупредить сообщение - PullRequest
0 голосов
/ 23 мая 2011

У меня есть приложение ShoppingCart, которое может добавлять / удалять объекты Book. Книга имеет атрибут 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

. В этом случае я хочу создать предупреждение для пользователя, который дублирует 2 копии с помощью isbn222, три копии с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();

}

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Я бы предложил иметь карту с <String, List<Book>>. где ключ String - ISBN книги, а список - книги с ISBN.

0 голосов
/ 23 мая 2011

Ну, если вам не нужно несколько предупреждений для одного и того же ISBN, вы либо а) сортируете входные данные, а затем проверяете их (простой цикл), либо б) проверяете свои выходные данные, чтобы убедиться, что они уже не содержат предупреждение о учитывая ISBN.

С точки зрения производительности сортировка должна быть лучше (O (n log n + n) против O (n ^ 2)), и вам также не нужна дополнительная память для хеш-таблицы или чего-то еще.

...