java - 无法计算包含两个 arrayllist 的 arraylist 的大小

标签 java arraylist

我希望我能清楚地解释我的问题: 共有三个类(class)。

  1. Lamboghini 正在获取 modelYearmodelNamehorsepowerboolean .

  2. LamboghiniCarLot 具有数组列表库存(向其中添加一些 lamboghini 元素)。

  3. LamboghiniDealershipGroup 类,其中包含数组列表 carLots。 现在,在 LamboghiniDealershipGroup 类中,我尝试创建一个方法 public int getTotalInventoryCount();但是,我无法正确计算库存。我的输出一直是0。我想这可能是因为我添加到arraylist的方式是错误的。但我不知道如何解决这个问题。

<小时/>
public Lamborghini(int modelYear, String modelName, double horsepower, boolean isRearWheelDrive)
{
    setModelYear(modelYear);
    setModelName(modelName);
    setHorsepower(horsepower);
    setIsRearWheelDrive(isRearWheelDrive);
}
<小时/>
public class LamborghiniCarLot
{
    private String lotName;
    private ArrayList<Lamborghini> inventory;


/**
 * creates the inventory ArrayList object;
 * the inventory remains empty (no Lamborghini objects are added when this constructor is called)
 */
public LamborghiniCarLot()
{
    inventory = new ArrayList<Lamborghini>();
}

/**
 * An example of a method - replace this comment with your own
 * 
 * @param  y   a sample parameter for a method
 * @return     the sum of x and y 
 */
public LamborghiniCarLot(String lotName)
{

    setLotName(lotName);


    inventory = new ArrayList<Lamborghini>();
    inventory.add(new Lamborghini(1965, "350GT", 365.3, true));
    inventory.add(new Lamborghini(1966, "400GT 2+2", 366.3, false));
    inventory.add(new Lamborghini(1967, "MIURA", 367.3, true));
    inventory.add(new Lamborghini(1968, "espada", 368.3, false))


    }
public void setLotName(String lotName)
    {
        if(lotName != null)
        {    
            if(lotName.equals("Taylor's Used Lambos"))
            {
                this.lotName = "Jason's Used Lambos";
            }else
            {
                this.lotName = lotName;
            }
        }

    }

    public void addLamborghini(Lamborghini newLamborghini)
    {
        if(inventory != null && newLamborghini != null && inventory.size() > 0)
        {
            for(Lamborghini lambo : inventory)
            {
                if(lambo == null)
                {
                    inventory.add(newLamborghini);
                }
            }
        }
    }
    public ArrayList<Lamborghini> getInventory()
        {
            return inventory;
        }}

那么,第三节课。

public LamborghiniDealershipGroup(String dealershipGroupName)
{

    setDealershipGroupName(dealershipGroupName);

    carLots = new ArrayList<LamborghiniCarLot>();
    //Create the first car lot
    LamborghiniCarLot carlot1 = new LamborghiniCarLot();

    carlot1.setLotName("Jason's vintage lambos.");
    carlot1.addLamborghini(new Lamborghini(1965, "350GT", 365.3, true));
    carlot1.addLamborghini(new Lamborghini(1966, "400GT 2+2", 366.3, false));
    carlot1.addLamborghini(new Lamborghini(1967, "MIURA", 367.3, true));


    //Create the second car lot
    LamborghiniCarLot carlot2 = new LamborghiniCarLot();

    carlot2.setLotName("Taylor's brand new lambos.");

    carlot2.addLamborghini(new Lamborghini(2006, "gallardo", 506.3, true));
    carlot2.addLamborghini(new Lamborghini(2007, "gallardo", 507.3, true));


    //Add them to the arraylist
    carLots.add(carlot1);
    carLots.add(carlot2);


}

我的方法在这里:

public int getTotalInventoryCount()
{
    int count = 0;


    for(LamborghiniCarLot c : carLots)
    {
        count += c.getInventory().size();
    }
    return count;
}

该方法总是得到 int 0。我该如何修复它?

最佳答案

非常很奇怪:

public void addLamborghini(Lamborghini newLamborghini) {
    if (inventory != null && newLamborghini != null && inventory.size() > 0) {
        for (Lamborghini lambo : inventory) {
            if (lambo == null) {
                inventory.add(newLamborghini);
            }
        }
    }
}

让我们快速说出条件。

  • 如果inventory不是null ...
  • ...和newLamborghini不是null ...
  • ...库存中至少有一件元素...
  • 然后我们迭代库存中的所有商品。
  • 如果其中一项是 null ...
  • ...我们添加 newLamborghini进入库存。

几乎所有这些都是不必要的,这就是您不插入任何内容的主要原因 - 您的集合开始为空。即使不是,您也不会添加任何 null添加元素以满足内部 foreach 循环。

您可以将其简化为更明智的检查,以查看您插入的元素是否为 null如果您将其插入的集合是 null相反。

if(inventory != null && newLamborghini != null) {
    inventory.add(newLamborghini);
}

如果您急切地初始化了 inventory集合(通过编写 ArrayList<Lamborghini> inventory = new ArrayList<>(); ),您可以避开 null检查inventory .

关于java - 无法计算包含两个 arrayllist 的 arraylist 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40838174/

相关文章:

java - ViewHolder 中包含多个 ArrayList 的 ArrayList

java - 在 MapReduce 中,如何将数组列表作为值从映射器发送到 reducer

java - 将 Null 添加到 ArrayList 时出现 UnsupportedOperationException

java - 输出中没有出现字母?

java - 上传youtube视频服务器端

java - 带有斜杠的 HttpServletRequest 变量与 %2f

java - 按每个字符串中逗号后的值按字母顺序对 ArrayList 进行排序

Java,数组到 ArrayList

java - BufferReader 在连接关闭时仍在运行

java - 从n个列表中获取交集