#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
— это может быть или не быть подходящим, в зависимости от того, как вы собираетесь использовать эти два класса.