【问题标题】:Object Oriented adding items to an a arrayList面向对象将项目添加到 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));}

标签: java list oop arraylist


【解决方案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 类 - 这可能合适也可能不合适,具体取决于您打算如何使用这两个类.

【讨论】:

    猜你喜欢
    • 2018-09-21
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2011-12-24
    • 2016-09-26
    • 1970-01-01
    • 2016-05-17
    相关资源
    最近更新 更多