Dennis,
Because ArrayList.BinarySearch is only defined on sorted lists.
http://msdn.microsoft.com/library/d...ollectionsArrayListClassBinarySearchTopic.asp
The reason ArrayList.BinarySearch is only defined on sorted lists is because
the Binary Search algorithm is "optimally" defined on sorted lists.
For details on the Binary Search algorithm see:
http://www.nist.gov/dads/HTML/binarySearch.html
http://en.wikipedia.org/wiki/Binary_search
--
Hope this helps
Jay
T.S. Bradley -
http://www.tsbradley.net
| Just curious as to why you have to sort the arraylist first...trying to
learn
| all I can and don't undetstand?
| --
| Dennis in Houston
|
|
| "Peter Proost" wrote:
|
| > If it doesn't mattter that the items are sorted after you've added them
you
| > can use the CaseInsensitiveComparer and binarysearch, but this only
works if
| > you sort the arraylist with the same
| > Icomparer(CaseInsensitiveComparer.Default) as you want to use for your
| > binarysearch.
| >
| > Hth Greetz Peter
| >
| > Dim arrList As New ArrayList
| >
| > arrList.Add("One")
| > arrList.Add("tWo")
| > arrList.Add("thRee")
| > arrList.Sort(CaseInsensitiveComparer.Default)
| > MsgBox(arrList.BinarySearch("three",
| > CaseInsensitiveComparer.Default))
| >
| > --
| > Programming today is a race between software engineers striving to build
| > bigger and better idiot-proof programs, and the Universe trying to
produce
| > bigger and better idiots. So far, the Universe is winning.
| >
| >
| > "Matt" <
[email protected]> schreef in bericht
| > | > > Oops. that loop wont finish when its supposed to.
| > >
| > > after the line: indexof = al.IndexOf(obj)
| > > you will to put: exit for
| > >
| > >
| > > Matt wrote:
| > > > There is no way i know of that allows you to do a textual compare on
| > > > aray objects unfortunatly. You could use the command lcase or ucase
to
| > > > convert both strings to lower or upper case before you compare.
| > > >
| > > > example:
| > > >
| > > > dim al as new arraylist
| > > > al.add("one")
| > > > al.add("two")
| > > >
| > > > dim x as integer = al.indexof(lcase("ONE"))
| > > >
| > > > but in this case, if you have al.add("oNe") then i guess it wont
work.
| > > > you could always do al.add(lcase("oNe")).
| > > >
| > > > or you could use this simple search pattern instead to overcome that
| > > > problem. hopefully your arraylist isnt too big, otherwise this would
| > > > take a while.
| > > >
| > > > Public al As Collections.ArrayList
| > > > Private obj As Object
| > > > Private strtest As String
| > > > Private indexof As Integer
| > > >
| > > > Public Sub mysub()
| > > > al.Add("hello")
| > > > strtest = "HeLLo"
| > > >
| > > > For Each obj In al
| > > > If LCase(CStr(al.Item(al.IndexOf(obj)))) =
LCase(strtest)
| > Then
| > > > indexof = al.IndexOf(obj)
| > > > End If
| > > > Next
| > > > End Sub
| > > >
| > > >
| > > > Please dont hit me if it doesnt work. i havnt tested it!
| > > >
| > > > Hope this helps. Matt
| > > >
| > > > JohnR wrote:
| > > >
| > > >> I have an arraylist of string values. I would like to search the
| > > >> arraylist to find the index of a particular string and I would like
| > > >> the search to be case insensitive.
| > > >>
| > > >> dim al as new arraylist
| > > >> al.add("one")
| > > >> al.add("two")
| > > >>
| > > >> dim x as integer = al.indexof("ONE") I would like this to find
the
| > > >> match and return 0
| > > >>
| > > >> Is there a way to make this happen?
| > > >>
| > > >> John
| > > >>
| >
| >
| >