1

我正在寻找是否有一种“简单”或简单的方法来制作一系列东西,比如说冰淇淋。这将是一类具有各种属性(ID、味道、大小、勺子)的冰淇淋,我想跑一个数组,收集每个订购的冰淇淋,然后在此列表中搜索任何重复值(2+ 相同大小)

我的第一个想法是创建数组而不是获取第一个实例的冰淇淋 ID 的 for 循环,并根据数组检查其“风味”,如果没有找到重复项,则 ID 增加 1(ID++),然后冰淇淋风味在数组中运行,如果找到匹配项,我会将布尔值设置为真。

我似乎采取的每一种方法似乎都相当冗长,而且我还没有一个有效的方法。希望一些新鲜/更有经验的眼睛会对此有所帮助。

在下面回答; XML 将包含如下内容

<iceCream id=1>
    <flavour>chocolate</flavour>
    <scoops>5</scoops>
</iceCream>
<iceCream id=2>
    <flavour>banana</flavour>
    <scoops>2</scoops>
</iceCream>

我想使用drools(可能是一个数组列表?)来收集每个冰淇淋标签,并允许我检查是否有任何冰淇淋具有相同的味道并在找到匹配项时输出一些东西(将布尔值设置为true),我明白是制作一个数组,然后通过数组运行每个冰淇淋,方法是使用它的 ID 来识别它,并在每个循环中执行 ID +1(int ID = 1),然后在 lopp ID++ 中。以及搜索风味子标签。

int ID = 0;
boolean match = false;
ArrayList iceCreams = new ArrayList($cont.getIceCreams());

for(iceCream $Flavour: (ArrayList<iceCream>)iceCreams)
    {
       ID++
       if($Flavour.getFlavour().equals(icecream with id of (ID variable).getFlavour)
       {
         match = true;
       }
    }
if(match)
{etc etc etc}

如果这有帮助的话?

4

2 回答 2

0

我也不知道流口水,但我会发布一些伪代码来说明我认为你想要完成的事情:

for(i = 0; i < len(ice_cream_array); i++)
{
   for(j = (i + 1); j < len(ice_cream_array); j++)
   {
       if (ice_cream_array[i] == ice_cream_array[j])
           break from inner loop
       else
           there is no match

   }
}

您可能还想查找冒泡排序和二分搜索

于 2013-06-14T16:25:48.090 回答
0

1)如果您可以控制第一个数组的创建,为什么不确保在插入时只插入唯一的冰淇淋。因此,当您插入数组时说 ID=1,首先遍历数组并检查数组中是否有 ID 为 1 的冰淇淋,如果没有,则将其放入数组并执行其他操作。2)搜索部分:现在在插入时,请确保您是根据ID的升序进行的,这样您就可以对其进行二分搜索。

注意:我不知道流口水,我只是根据我对问题的理解发布了一个逻辑。

于 2013-06-14T14:17:34.947 回答