检查列表中的列表

时间:2014-11-29 05:47:39

标签: java arrays

下面给出方法的描述,这是我到目前为止的代码。我正在为一个在线动物园编程,客户在那里订购了一堆动物,我需要告诉客户我是否有他要求的动物。库存中的动物和客户的请求列表都按零售价值的降序排列。因此,如果客户订购了两只猎豹,它们将同时出现在清单和他的清单中。有人能告诉我我做错了什么吗?此外,我无法使用任何排序算法,任何计数算法或任何Java功能。它是一个简单的数组操作项目,我需要完成使用循环和条件。

         * Checks if a list of items is contained in the current list. If the list
         * of items has duplicates then the current list must have that many of the
         * item as well. (In other words, this method will return true if ALL of the
         * items in the parameter are contained in the current list. If anything is
         * missing, then the return value will be false.)
         * 
         * @param listToCheck
         *            list of items that may or may not be a subset of the current
         *            list
         * @return true if the parameter is a subset of the current list; false
         *         otherwise 

    public boolean checkAvailability(SortedListOfImmutables listToCheck) {
            int pos = 0;
            for(int i = 0; i<items.length; i++){ //items is the original array
                if(listToCheck.items[0].equals(items[i])){
                    pos = i;
                    break;
                }
            }
            int availableCounter = 0;
            for(int i = 0; i<listToCheck.items.length; i++){
                if(listToCheck.items[i].equals(items[pos])){
                    pos++;
                    availableCounter++;
                }
                else
                    pos++;

            }
            if(availableCounter == listToCheck.items.length-1){
                 return true;
              }
return false; 
        }

1 个答案:

答案 0 :(得分:1)

我会采用不同的方法。我的算法将遍历整个列表。由于整个列表和请求列表都已排序,您可以遍历整个列表,同时查看请求列表的头部以查找匹配项。如果达到匹配,您可以增加表示请求列表索引的变量,继续下一个“请求项”并与整个列表中的下一个项进行比较。冲洗并重复......

请参阅以下代码以获得进一步说明:

public boolean checkAvailability(SortedListOfImmutables listToCheck) {
    int availableCounter = 0;
    for(int i = 0; i<items.length; i++){ //items is the original array
        if(listToCheck.items[availableCounter].equals(items[i])){
            if (++availableCounter == listToCheck.items.length)
                return true;
        }
    }
    return false;
}

这会解决您的问题吗?如果您不明白,请随时提出问题,如果这不能解决您的问题,请告诉我。