对于家庭作业,我们必须编写2个ArrayLists的Intersection合并。我使用以下代码完成了它
public void Intersection()
{
foreach (object obj1 in Developed)
{
Apps xApp = (Apps)obj1;
foreach (object obj2 in DPloyed)
{
Apps yApp = (Apps)obj2;
if (xApp.CompareName(yApp) == 0)
{
Inter.Add(yApp);
}
}
}
}
我想实现它而不是使用while循环,但下面的代码似乎在列表中保留缺少的元素。它将第一个元素放在新的交集列表中,但是一旦开发的长度从1个元素增加到5个元素或更多,它就不会添加新的元素。
public void Intersection()
{
int i = 0;
int j = 0;
while (i < Developed.Count && j < DPloyed.Count)
{
Apps curA = (Apps)Developed[i];
Apps curB = (Apps)DPloyed[j];
if (curA.CompareName(curB) == 0)
{
Inter.Add(curA);
i++;
j++;
}
else if (curA.CompareName(curB) < 0)
{
i++;
}
else
j++;
}
}
有关为什么while循环不起作用的任何帮助将不胜感激。
由于
答案 0 :(得分:1)
这样做
while (i < Developed.Count || j < DPloyed.Count)
因为可能两个列表可能都有不同的Count。
并且您需要在循环中为索引添加额外的检查,这样您就不会得到Index out of Range Exception
。
答案 1 :(得分:0)
问题不在合并的实际代码中。我的比较方法中发现问题。