1

我是 java 新手,将数组对象添加到列表时遇到问题。我已经检查了该论坛中的主题,但找不到与我的问题类似的内容。

我已经创建了一个名为 Item 的类,它将保存有关待售商品的信息,它有 4 个实例变量 id、desc、cost、quantity。然后我有一个销售类,它有我的主要方法。基本上我想要做的是从我的 Item 类构建一个对象数组并对我的数据进行硬编码(我已经创建了,但我不确定我是否做得对)。

我创建了一个 ArrayList,我现在要做的是将我创建的数组中的 5 个对象添加到列表中。

这是我的项目类

public class Item {


    private String itemID;
    private String desc;
    private double cost;
    private int quantity;

    public Item() {
        itemID="";
        desc="";
        cost=0;
        quantity=0;
    }

    public Item(String id, String d, double c, int q) {
        itemID = id;
        desc = d;
        cost = c;
        quantity = q;

    }

    /**
     * @return the itemID
     */
    public String getItemID() {
        return itemID;
    }

    /**
     * @param itemID the itemID to set
     */
    public void setItemID(String itemID) {
        this.itemID = itemID;
    }

    /**
     * @return the desc
     */
    public String getDesc() {
        return desc;
    }

    /**
     * @param desc the desc to set
     */
    public void setDesc(String desc) {
        this.desc = desc;
    }

    /**
     * @return the cost
     */
    public double getCost() {
        return cost;
    }

    /**
     * @param cost the cost to set
     */
    public void setCost(double cost) {
        this.cost = cost;
    }

    /**
     * @return the quantity
     */
    public int getQuantity() {
        return quantity;
    }

    /**
     * @param quantity the quantity to set
     */
    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "Item [itemID=" + itemID + ", desc=" + desc + ", cost=" + cost
                + ", quantity=" + quantity + "]";
    }



}

还有我的销售课:

import java.util.*;

public class Sales {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int i;

        Item[] items = new Item[5];


        for(i = 0; i < items.length; i++)
        {
            items[i]= new Item(); // create array 
        }

        //hard-coded values of id, desc, cost, qty
        items[0].setItemID("PN250");
        items[1].setItemID("ER100");
        items[2].setItemID("PP150");
        items[3].setItemID("MK200");
        items[4].setItemID("PN300");

        items[0].setDesc("Pen");
        items[1].setDesc("Eraser");
        items[2].setDesc("Paper");
        items[3].setDesc("Marker");
        items[4].setDesc("Pen");

        items[0].setCost(1.50);
        items[1].setCost(1.25);
        items[2].setCost(3.75);
        items[3].setCost(2.50);
        items[4].setCost(2.25);

        items[0].setQuantity(0);
        items[1].setQuantity(175);
        items[2].setQuantity(310);
        items[3].setQuantity(75);
        items[4].setQuantity(450);

        double total = 0;
        for(Item d : items)
        {

            System.out.print(d.getItemID());
            System.out.print("\t" + d.getDesc());
            System.out.print("\t" + d.getCost());
            System.out.println("\t" + d.getQuantity());
        }

        List<Item> obj;
        obj = new ArrayList<Item>();

    }
}
4

3 回答 3

4

您可以使用以下内容将数组添加到列表中:

obj.addAll(Arrays.asList(items));
于 2012-08-05T22:24:13.917 回答
1

您可以使用:

for (i = 0; i < items.length; i++)
{
    obj.add(items[i]);
}

但为什么不在项目创建和填充后立即添加?

于 2012-08-05T22:23:28.077 回答
1

与其在函数开头创建数组,不如创建一个 arrayList 并使用 put 方法向其中添加对象。

此外,您应该考虑使您的对象不可变并将它们的属性传递给它们的构造函数,而不是为每个属性调用 setter

于 2012-08-05T22:32:24.440 回答