将数组对象添加到列表中

时间:2012-08-05 22:20:42

标签: java arrays list object

我是java的新手,我在将数组对象添加到列表时遇到问题。我已经检查了这个论坛中的主题,但找不到与我的问题相似的东西。

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

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

这是我的Item类

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>();

    }
}

3 个答案:

答案 0 :(得分:4)

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

obj.addAll(Arrays.asList(items));

答案 1 :(得分:1)

您可以使用:

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

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

答案 2 :(得分:1)

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

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