面向对象将项目添加到 arrayList

Posted

技术标签:

【中文标题】面向对象将项目添加到 arrayList【英文标题】:Object Oriented adding items to an a arrayList 【发布时间】:2021-03-19 05:38:01 【问题描述】:

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

【问题讨论】:

ItemList类添加一个新函数:public void addItem(String itemName,double itemWeight, double itemPrice) itemList.add(new Item (itemName, itemWeight, itemPrice)); 【参考方案1】:

您的addItem 方法采用item,因此第二个sn-p 将不起作用,至少在ItemList 的实现是这样的情况下不起作用。您当然可以将其添加到您的课程中:

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

这里有一个论点,即像这样实现 ItemList 会对使用 ItemList 的人隐藏 Item 类 - 这可能合适也可能不合适,具体取决于您打算如何使用这两个类.

【讨论】:

以上是关于面向对象将项目添加到 arrayList的主要内容,如果未能解决你的问题,请参考以下文章

为啥是List list = new ArrayList,而不直接用ArrayList

java----ArrayList

面向对象 类库委托

面向对象第一次练手-------ArrayList集合类对象冒泡排序类型转换

集合类之ArrayList

第2章 集合类之ArrayList