2009-07-28 8 views
0

J'ai une liste d'objets, je voudrais savoir l'index dans l'arraylist de l'objet qui contient une certaine valeur, y at-il une manière intégrée de faire la recherche?Recherche arraylist d'objets

Je sais que je pourrais simplement itérer à travers l'arraylist pour trouver la valeur correcte, par ex. :

ReportToFind="6" 

For i = 0 To ReportObjList.Count - 1 
    If ReportObjList.Item(i).ReportCode = ReportToFind Then 
     ReportName.Text = ReportObjList.Item(i).ReportName ' found it - show name 
     Exit For 
    End If 
Next 

La seule autre solution est de remplacer ce code par une recherche binaire?

.Net 1.1

Répondre

1

Vous devez utiliser de meilleures structures de données dans le cas où la recherche par le biais d'une liste est un problème. Vous pouvez utiliser une recherche binaire pour votre liste dans le cas où votre liste est triée par rapport à la valeur à rechercher. Dans d'autres cas, vous feriez mieux d'utiliser des structures de données plus intelligentes, comme un arbre binaire ou une carte.

+2

"meilleures structures de données" - meilleurs exemples requis ici, peut-être? Encore, +1 pour la direction. – AmitK

+0

Il n'est pas vraiment possible de donner une réponse à moins que l'énoncé du problème exact ne soit clair. Différentes structures de données ont des forces et des inconvénients différents et, en tant que tel, il appartient au développeur/concepteur de bien connaître les structures de données de base pour être en mesure de déterminer quel outil convient le mieux au travail. –

0

Je ne sais pas si .Net 1.1 l'a, mais vous pouvez essayer la méthode .IndexOf dans votre liste de tableaux.

0

Il semble que vous ayez besoin d'indexer votre reportObjectList par reportCode en plus de l'index de l'élément. Vous pouvez le faire dans une deuxième liste parallèle avec le code de rapport comme index et l'itemIndex comme valeur.