实现2个数组列表的交集合并

时间:2013-06-09 12:00:00

标签: c# merge

对于家庭作业,我们必须编写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循环不起作用的任何帮助将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

这样做

while (i < Developed.Count || j < DPloyed.Count)
因为可能两个列表可能都有不同的Count。

并且您需要在循环中为索引添加额外的检查,这样您就不会得到Index out of Range Exception

答案 1 :(得分:0)

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