2012-02-10 10 views
0

クライアントのデータを配列リストに保存します。どのように高速なメソッドで配列リスト(clientList)内のデータ(currentIP)の一部を見つけるには?次のようにループリストなしで配列リスト内のオブジェクトの一部を検索する方法

コード:アドバイス

' Array list to keep Clients Object 
Protected Friend clientList As ArrayList = ArrayList.Synchronized(New ArrayList()) 

Public Class Clients 
    public clientIPAdrress As IPAddress 
    public clientTCP As TcpClient 
    public clientStream As SslStream 
End Class 


Public Sub Test() 

    ' Create objClients Object from Clients Class 
    Dim objClients as new Clients 

    ' Add objClients to Array List 
    clientList.Add(objClients) 

    Dim currentIP as IPAdress = IPAddress.Parse("192.168.1.2") 
    Dim isIPFound as Boolean = False 

    ' Search currentIP inside clientList with looping method 
    For Each ip As Clients In clientList                    
    If ip.ClientIPAdrress = currentIP Then 
     isIPFound = True 
     Exit For 
    End If 
    Next 

End Sub 

感謝。

答えて

1

その後、COUは、LINQを使用することができ、代わりに型指定されたList(Of Clients)を使用する必要があります。

Dim clientList As New List(Of Clients) 
clientList.Add(new Clients()) 
Dim isIPFound=clientList.Any(Function(ip) ip.ClientIPAdrress = currentIP) 

しかし、本質的に、それだけで1行のあなたのループと同じです。

最も速い方法を見つける必要がある場合は、リストを並べ替えることができ、BinarySearchカスタム比較者を使用してIPを割り当てることができます。また、IPがリスト内で一意の場合は、代わりにDictionary(Of IPAdress,Clients)を使用できます。

+0

@Tim、ありがとう、私は試して成功しました。 :) – RCM5000

関連する問題