面向对象将项目添加到 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