Объектно-ориентированное добавление элементов в список массивов a

#java #list #oop #arraylist

#java #Список #ооп #arraylist

Вопрос:

Я новичок в объектно-ориентированных языках, и у меня просто есть несколько вопросов о добавлении элементов в ArrayList . Я придумал решение, однако я в замешательстве, поскольку видел другой используемый метод, который я не понимаю. Не мог бы кто-нибудь объяснить мне, как работает второй метод?

У меня есть два класса, по одному для товара в магазине:

 public class Item {
    String name;
    double weight;
    double price;
    
    public Item(String itemName,double itemWeight, double itemPrice){
        this.name = itemName;
        this.weight = itemWeight;
        this.price = itemPrice;
    }
    public String toString(){
        return(name   " has a weight of "   weight   " and a price of "   price);
    }    
}
 

И еще один из списка массивов товаров в магазине:

 import java.util.ArrayList;
public class ItemList{
    String itemName;
    ArrayList<Item> itemList = new ArrayList<>();
     
    public ItemList(String name) {
        itemName = name;
    }
    public void addItem(Item item1){
        itemList.add(item1);
    }
    public void printItems(){
        for(int i=0; i < itemList.size(); i  ){
            System.out.println(itemList.get(i));
        }
    }
}
 

Затем у меня есть основной метод, который добавляет элементы в список, а затем печатает их:

 public class ShopMain {
    public static void main (String[] args){
         ItemList myList = new ItemList("Fruit");
         Item apple = new Item("Apple", 100, 60);
         myList.addItem(apple);
         Item banana = new Item("Banana", 118, 50);
         myList.addItem(banana);
         
         myList.printItems();
    }
}
 

Однако второй метод, который я видел, как люди используют, не работает для меня и отформатирован следующим образом:

 public class HopefulShopMain{
    public static void main (String[] args){
         ItemList myList = new ItemList("Fruit");
         
         myList.addItem("Apple", 100, 60);
         myList.addItem("Banana", 118, 50);
    }
}
 

Комментарии:

1. Добавьте новую функцию в ItemList класс: public void addItem(String itemName,double itemWeight, double itemPrice) { itemList.add(new Item (itemName, itemWeight, itemPrice));}

Ответ №1:

Ваш addItem метод принимает an item , поэтому второй фрагмент не будет работать, по крайней мере, с реализацией ItemList того, что есть. Конечно, вы могли бы добавить его в свой класс:

 public void addItem(String name, double weight, double price) {
    itemList.add(new Item(name, weight, price));
}
 

Здесь следует привести аргумент ItemList , что подобная реализация скрывает Item класс от того, кто его использует ItemList — это может быть или не быть подходящим, в зависимости от того, как вы собираетесь использовать эти два класса.