以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教集合  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=127532)

--  作者:hbhb
--  发布时间:2018/11/16 8:50:00
--  请教集合
大师:请问如何判断两个集合相等,集合包含?
--  作者:有点甜
--  发布时间:2018/11/16 9:26:00
--  

如果集合1、集合2个数相等,求两个集合的交集。如果结果个数等于集合1、集合2,就是相等。

 

如果个数不等,就交集,如果个数等于集合较小的那一个,就是包含。

 

交集已经跟你说过,请自行测试。


--  作者:cbt
--  发布时间:2018/11/16 9:33:00
--  

Dim jh1 As New List(Of String)
Dim jh2 As New List(Of String)
For i As Integer = 0 To 10
    jh1.Add("cs" & i)
    jh2.Add("cs" & i)
Next
If jh1.Count<> jh2.Count Then Return "集合数量不同!"

\'查询2个集合内容 是否一样!
Dim lszd1 As new Dictionary(of String,Integer)
For Each s As String In jh1
    If lszd1.ContainsKey(s)=False Then
        lszd1.Add(s,0)
    Else
        lszd1(s)+=1
    End If
Next

Dim lszd2 As new Dictionary(of String,Integer)
For Each s As String In jh2
    If lszd2.ContainsKey(s)=False Then
        lszd2.Add(s,0)
    Else
        lszd2(s)+=1
    End If
Next

If lszd1.Count<>lszd2.Count Then Return "内容不一样1!"
For Each s As String In lszd1.Keys
    If lszd2.ContainsKey(s)=False Then Return "内容不一样2"
    If lszd2(s)<>lszd1(s) Then Return "内容不一样3"
Next

 

\'顺序必须一样则转换一下!

Dim str1 As String = String.Join(",",jh1.ToArray)
Dim str2 As String = String.Join(",",jh2.ToArray)
output.show(str1 & "  " & str2 )
If String.Compare(str1, str2, False) Then Return "集合顺序内容不同!"

Return "两个家伙一样"

 

[此贴子已经被作者于2018/11/16 9:33:36编辑过]