检查可用性

时间:2014-11-27 16:23:55

标签: java arrays

我们说我经营着一家书店,而且有人订购了一系列书籍。 B,C,D,A,A,A(参数) 如果在我的库存数组中找到所有这些书籍,我需要返回true。如果传入的列表中存在同一本书的两个实例(在本例中为A),我需要检查我的库存中是否存在该书的那么多实例。我遍历了参数数组和库存数组,但到目前为止,即使我的库存中只有一本A书,我的代码也会返回true。我坚持编写代码的逻辑,检查我的库存中是否有3本书。从本质上讲,客户正在下订单,我需要告诉他们我是否有他想要的书。订单列表将按零售价值的降序排列。因此,如果这样可以让它变得更容易,那么所有三本A书都会紧挨着。 这是我到目前为止的骨架。

public boolean checkAvailability(customersOrder listToCheck) {
    for(int i = 0; i<listToCheck.items.length; i++){ //listToCheck's items array
        for(int j = 0; j<items.length; j++){ //inventory array
            if(listToCheck.items[i].equals(items[j])){
                return true;
            }
        }
    }
    return false; 
}

2 个答案:

答案 0 :(得分:0)

这非常依赖于您存储数据的方式,这是几乎所有数据设计都可以使用的最简单,最通用的方法,但是:

  • 在处理数组之前对其进行排序,这会将所有相同的书籍组合在一起。

现在,当您查看是否有足够的图书时,您可以检查是否有足够的内容涵盖订单中该图书的每个实例。

答案 1 :(得分:0)

因为这看起来像家庭作业(过于简单的限制性数据结构),只是一个想法

Walk the listToCheck
    For the ith element, say A we handle all As
    If it occurs before i too, skip (you handled it already)
    Count the same items >= i: `quantity`

    Loop the stock to find `#quantity` items.
    If after the loop #quantity not reached, return failure
If after the walk of listToCheck reached
return success

如果相同的项目一个接一个地出现,则可以简单地确定数量,并且循环变得更简单。