1

对于家庭作业,我们必须编写 2 个 ArrayList 的交叉合并。我已经使用以下代码完成了

    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 循环不起作用的帮助将不胜感激。

谢谢

4

2 回答 2

1

做这个

while (i < Developed.Count || j < DPloyed.Count)

因为可能两个列表都可能具有不同的计数。

并且您需要在循环中对索引进行额外检查,以免获得Index out of Range Exception.

于 2013-06-09T12:02:25.903 回答
0

问题不在合并的实际代码中。在我的比较方法中发现问题。

于 2013-06-10T08:26:20.763 回答