数组列表循环重复值

时间:2013-06-13 13:28:08

标签: for-loop arraylist drools

我正在寻找一种“简单”或简单的方法来制作一些东西,让我们说冰淇淋......这将是一类具有各种属性(ID,味道,大小,勺子)的冰淇淋,我会喜欢运行一个数组,收集每个订购的冰淇淋,然后在这个列表中搜索任何重复的值(2+相同大小)

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

我似乎采取的每一种方法似乎都是漫长的啰嗦,我还没有工作。希望一些新鲜/经验丰富的眼睛对此有所帮助。

回答以下问题; 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}

如果这有帮助,可以采用这些方法吗?

2 个答案:

答案 0 :(得分:0)

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

注意:我不知道drools,我刚刚根据我对这个问题的理解发布了一个逻辑。

答案 1 :(得分:0)

我也不知道drools,但我会发布一些伪代码,我认为你想要实现的目标:

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

   }
}

您可能还想查找bubble sorts and binary searches