Arraylist внутри Arraylist в Java - PullRequest
0 голосов
/ 09 октября 2018

Я должен создать массив из Магазины объектов, у которых есть имя, описание и другой список объектов товаров.Метод addProduct оставлен пустым, потому что именно здесь я сталкиваюсь с проблемой.Мне нужно выбрать конкретное название магазина в списке магазинов, созданном с помощью объектов Shops, а затем добавить один или несколько товаров в список товаров.Я не понимаю, как мне это удается.Если бы вы, ребята, могли бы помочь мне.

Вот код, который у меня есть:

//class of shops but I removed the getters and setters to keep the code short
public class Shops {
    private  String name;
    private String desc;
    private ArrayList<Products> product;

    public Shops(String name, String desc, ArrayList<Products> product) {
        this.name = name;
        this.desc = desc;
        this.product = product;
    }

//another class called Shop assistant which adds products to a specific shop

 public class ShopAssistant {

   ArrayList<Shops> shop = new ArrayList<>();

public void addShops(Shops shop) {
    shop.add(shop);
}
public void addProduct(Products product ) {
    //add products to product arraylist which should be linked to shop arraylist
}

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Сначала вам нужно, чтобы метод «addProduct» находился в классе «Магазин», чтобы добавить товар в список магазинов магазина.

Затем вы можете создать метод, такой как «addProductToShop», в разделе «Магазин».Класс ShopAssistant ', который принимает магазин и продукт и добавляет продукт в магазин, например, используйте цикл for, чтобы найти магазин, и добавьте продукт, используя метод addProduct из класса' Shop '.

Я бы также посоветовал переименовать «магазин» в «магазины» и «продукт» в «продукты», чтобы было более понятно, что они держат.

0 голосов
/ 09 октября 2018
public class Shop {
    private String name; 
    private String description;
    private ArrayList<Products> products;

    public Shop(String name, String description, ArrayList<Products>products){
        this.name = name; 
        this.description = description;
        this.products = products;
    }

    //This is the main issue that you were missing. 
    //You need to have addProducts in both the shop and assistant. 
    public void addProducts(ArrayList<Products>newProducts){
        newProducts.forEach((product) -> {
            this.products.add(product);
        });
    }
}

public class ShopAssistant {
    ArrayList<Shop> shops = new ArrayList<>();
    public void addShop(Shop newShop){
        shops.add(newShop);
    }

    //Call AddProducts for each shop in the list of shops that need products updated.
    public void addProducts(ArrayList<Products>newProducts, ArrayList<Shop>shopsToAddTo){
        shopsToAddTo.forEach((shop) -> {
            shop.addProducts(newProducts);
        });
    }
}
0 голосов
/ 09 октября 2018

Вы должны знать, куда добавить товар.Вы должны добавить его в объект Shop внутри ArrayList, а не в ArrayList.Вы можете получить магазин по его индексу в ArrayList, так что вам, вероятно, понадобится другой параметр int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...