Проверка продукта по одинаковому id

Изучаю java для тестировщиков, помогите сообразить, как решить задачу. Есть класс Product, в нем лежит информация о продукте: id, цена, имя. Соответственно, все геттеры и сеттеры. Есть класс ProductRepository, в нем реализованы методы поиск продукта по id и сохранение продуктов. Задача в следующем: в методе добавления нового товара в репозиторий должна осуществляться проверка на то, что в нём нет уже товара, у которого бы совпадал id с id добавляемого товара. Если же такой уже есть, то должно выкидываться ваше исключение - AlreadyExistsException. Можно ли как-то через метод findById это осуществить? Вот мой код:

public class ProductRepository {
    private Product[] products = new Product[0];

    public void save(Product product) {

        //{
        // throw new AlreadyExistsException(
        //            "Product with ID " + id + " already exist"
        // );

            //}
        Product[] tmp = new Product[products.length + 1];
        for (int i = 0; i < products.length; i++) {
            tmp[i] = products[i];
        }
        tmp[tmp.length - 1] = product;
        products = tmp;

    }

  
    public Product findById (int id) {
        for (Product product : products) {
            if (product.getId () == id) {

                return product;
            }
        }
        return null;
    }


    public Product[] getProducts() {
        return products;
    }
}

Ответы (1 шт):

Автор решения: Oleksandr Borshch

Не очень понятно в чем проблема. Возьмите и вызовите в начале метода save метод findById.

public class ProductRepository {
        private Product[] products = new Product[0];
    
        public void save(Product product) {
            if (this.findById(product.getId()) != null) {
               throw new AlreadyExistsException(
               "Product with ID " + product.getId() + " already exist");
              
            }    // это имеется в виду? 
            
            Product[] tmp = new Product[products.length + 1];
            for (int i = 0; i < products.length; i++) {
                tmp[i] = products[i];
            }
            tmp[tmp.length - 1] = product;
            products = tmp;
            
        }
    
      
        public Product findById (int id) {
            for (Product product : products) {
                if (product.getId () == id) {
    
                    return product;
                }
            }
            return null;
        }
    
    
        public Product[] getProducts() {
            return products;
        }
    }
→ Ссылка