请教一个List合并的算法问题
有一个类,如下所示,现在有两个的List<A>,里面Name一样的合并一起,B下面DES如果一样的就不添加,如果不一样就添加。
[/color]
我写了个多重循环的方法,想知道有没有可以优化的,坐等大神。
public class A
{
public string Name { get; set; }
public List<B> BS { get; set; }
}
public class B
{
public string DES { get; set; }
}[/color]
我写了个多重循环的方法,想知道有没有可以优化的,坐等大神。
private static List<A> listA;
private static List<A> listA1;
private static List<A> listA2;
static void Main(string[] args)
{
Init();
listA = CombineA(listA, listA1);
listA = CombineA(listA, listA2);
Console.ReadKey();
}
static List<A> CombineA(List<A> a1, List<A> a2)
{
bool bUnequal = true;
bool bDetailUnequal = true;
for (int i = 0; i < a2.Count; i++)
{
bUnequal = true;
for (int j = 0; j < a1.Count; j++)
{
if (a1[j].Name == a2[i].Name)
{
bUnequal = false;
for (int k = 0; k < a2[i].BS.Count; k++)
{
bDetailUnequal = true;
for (int l = 0; l < a1[j].BS.Count; l++)
{
if (a1[j].BS[l].DES == a2[i].BS[k].DES)
{
bDetailUnequal = false;
}
}
if (bDetailUnequal)
{
a1[j].BS.Add(a2[i].BS[k]);
}
}
}
}
if (bUnequal)
{
a1.Add(a2[i]);
}
}
return a1;
}
static void Init()
{
listA = new List<A>
{
new A
{
Name="a",BS=new List<B>
{
new B{DES="a1"},
new B{DES="a2"}
}
}
};
listA1 = new List<A>
{
new A
{
Name="b",BS=new List<B>
{
new B{DES="b1"},
new B{DES="b2"}
}
},
new A
{
Name="c",BS=new List<B>
{
new B{DES="c1"},
new B{DES="c2"}
}
}
};
listA2 = new List<A>
{
new A
{
Name="c",BS=new List<B>
{
new B{DES="b1"},
new B{DES="c2"}
}
},
new A
{
Name="a",BS=new List<B>
{
new B{DES="c1"},
new B{DES="c2"}
}
}
};
}
}
...全文
相关推荐
将两个递增的链表合并为一个非递减的链表
从键盘输入两个链表,通过程序对他们排序,之后按递增顺序合并链表
C/C++ 合并链表merge linked list算法详解及源码
该算法的基本思想是遍历两个链表,将较小的节点依次连接起来,直到遍历完其中一个链表,然后将剩余的链表直接连接到新链表的末尾。该算法的基本思想是遍历两个链表,将较小的节点依次连接起来,直到遍历完其中一个链表,然后将剩余的链表直接连接到新链表的末尾。该算法的基本思想是遍历两个链表,将较小的节点依次连接起来,直到遍历完其中一个链表,然后将剩余的链表直接连接到新链表的末尾。该算法的基本思想是遍历两个链表,将较小的节点依次连接起来,直到遍历完其中一个链表,然后将剩余的链表直接连接到新链表的末尾。
两个有序顺序表合并成一个顺序表,还是有序的
两个有序顺序表合并成一个顺序表,还是有序的
合并k个有序的list
NULL 博文链接:https://dugu61888.iteye.com/blog/1978054
两个有序链表序列的合并_C语言_
两个有序链表序列的合并,已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。


