实现两个数组列表的交叉合并

本文关键字:列表 合并 数组 两个 实现 | 更新日期: 2023-09-27 18:17:40

对于家庭作业,我们必须编写两个数组列表的交叉合并程序。我使用以下代码

完成了它
    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循环为什么不能工作的任何帮助将不胜感激。

谢谢

实现两个数组列表的交叉合并

这样做

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

因为两个列表可能有不同的Count。

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

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