请问:
    我有一个数组myArray(9),里面有10个元素:
农民
工人
知识分子
农民
农民
知识分子
工人
农民
农民
工人
    如何用循环或其他什么方法,去掉其中的重复元素,得出"农民","工人"和"知识分子",也就是得到的新数组只有三个元素。同时得出每个种类的重复次数,也就是说“农民”重复5次,“工人”重复3次
"知识分子"重复2次。
请写清楚点,我是新手,谢谢~!

解决方案 »

  1.   

    托2各listbox把他们的sored属性设置为True
    Option ExplicitPrivate Sub Form_Load()
        Call setList1(List1)
        Call setList2(List1, List2)
    End SubPrivate Sub setList1(ByVal objList As ListBox)
        objList.AddItem "1"
        objList.AddItem "2"
        objList.AddItem "3"
        objList.AddItem "1"
        objList.AddItem "3"
        objList.AddItem "2"
        objList.AddItem "3"
        objList.AddItem "1"
        objList.AddItem "1"
        objList.AddItem "2"
    End SubPrivate Sub setList2(ByVal objListSource As ListBox, ByVal objListResult As ListBox)
        
        Dim I As Long
        Dim int_Num As Long
        Dim tmpStr As String
        
        tmpStr = objListSource.List(I)
        objListResult.AddItem tmpStr
        Do While I < objListSource.ListCount
            If tmpStr <> objListSource.List(I) Then
                tmpStr = objListSource.List(I)
                objListResult.List(objListResult.ListCount - 1) = objListResult.List(objListResult.ListCount - 1) + "|" + CStr(int_Num)
                objListResult.AddItem tmpStr
                int_Num = 0
            End If
        int_Num = int_Num + 1
        I = I + 1
        Loop
        objListResult.List(objListResult.ListCount - 1) = objListResult.List(objListResult.ListCount - 1) + "|" + CStr(int_Num)
        
    End Sub
      

  2.   

    把list1的sored属型设为truelist2不用
      

  3.   

    利用一个 ListBox:Option ExplicitPrivate Declare Function SendMessagebyString Lib _
    "user32" Alias "SendMessageA" (ByVal hWND As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As String) As LongPrivate Const LB_FINDSTRINGEXACT = &H1A2    '在 ListBox 中精确查找Private Sub Form_Load()
        List1.Visible = False
    End SubPrivate Sub Command1_Click()
    Dim i As Integer, n As Integer
        List1.Clear
        For i = 0 To Ubound(myArray)
           n = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, myArray(i))
           If n < 0 then
              List1.AddItem myArray(i)
              List1.ItemData(List1.NewItem) = 1
           Else
              List1.ItemData(n) = List1.ItemData(n) + 1
           End If
        Next i
        For i = 0 To List1.ListCount - 1
           MsgBox List1.List(i) & ":" & List1.ItemData(i)
        Next i
    End Sub