面向java的向arraylist添加项

vuktfyat  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(299)

我是面向对象语言的新手,只是对向 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));
        }
    }
}

然后我有一个main方法,将项目添加到列表中,然后打印它们:

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);
    }
}
0yg35tkg

0yg35tkg1#

你的 addItem 方法需要 item ,所以第二个代码段不起作用,至少在 ItemList 保持现状。您当然可以将其添加到您的类中:

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

这里有一个论点 ItemList 这样就隐藏了 Item 从任何使用 ItemList -这可能合适,也可能不合适,这取决于您打算如何使用这两个类。

相关问题