Dear All,

Thanks for the response and the clear clarification.

Lawrence

On Thu, Feb 17, 2011 at 5:44 AM, Mike Trentman <mike.trent...@gmail.com>wrote:

> I believe this problem is arising because in order to use
> Colelctions.binarySearch() you must first sort your list.
> Try modifying as below and compare the results.
>
> import java.util.Collections;
> import java.util.Iterator;
> import java.util.LinkedList;
> import java.util.List;
> public class Question {
>     /**
>      * @param args
>      */
>      public static void main(String[] args) {
>          // TODO Auto-generated method
>          // stub
>          List ll = new
>          LinkedList();
>          ll.add(new Integer (5));
>          ll.add(new Integer (8));
>          ll.add(new Integer (3));
>          ll.add(new Integer (4));
>
>          int index5 = Collections.binarySearch(ll, new Integer(5));
>          int index8 = Collections.binarySearch(ll, new Integer(8));
>          int index3 = Collections.binarySearch(ll, new Integer(3));
>          int index4 = Collections.binarySearch(ll, new Integer(4));
>          System.out.println(ll);
>          System.out.println("5 is in index " + index5);
>          System.out.println("8 is in index " + index8);
>          System.out.println("3 is in index " + index3);
>          System.out.println("4 is in index " + index4);
>
>          // Sort the linked list
>          Collections.sort(ll);
>          index5 = Collections.binarySearch(ll, new Integer(5));
>          index8 = Collections.binarySearch(ll, new Integer(8));
>          index3 = Collections.binarySearch(ll, new Integer(3));
>          index4 = Collections.binarySearch(ll, new Integer(4));
>          System.out.println(ll);
>          System.out.println("5 is in index " + index5);
>          System.out.println("8 is in index " + index8);
>          System.out.println("3 is in index " + index3);
>          System.out.println("4 is in index " + index4);
>     }
> }
>
> Output now is:
> -------------------------------
> [5, 8, 3, 4]
> 5 is in index 0
> 8 is in index 1
> 3 is in index -1
> 4 is in index -1
> [3, 4, 5, 8]
> 5 is in index 2
> 8 is in index 3
> 3 is in index 0
> 4 is in index 1
>
>
>
> On Thu, Feb 17, 2011 at 1:17 AM, Michèle Garoche <migat...@gmail.com>wrote:
>
>>
>>
>> On Feb 16, 11:49 pm, Lawrence Louie <lawrence.lo...@gmail.com> wrote:
>> > import java.util.Collections;
>> > import java.util.Iterator;
>> > import java.util.LinkedList;
>> > import java.util.List;
>> >
>> > public class Question {
>> >
>> >         /**
>> >          * @param args
>> >          */
>> >         public static void main(String[] args) {
>> >                 // TODO Auto-generated method stub
>> >
>> >                 List ll = new LinkedList();
>> >                 ll.add(new Integer (5));
>> >                 ll.add(new Integer (8));
>> >                 ll.add(new Integer (3));
>> >                 ll.add(new Integer (4));
>> >
>> >                 int index5 = Collections.binarySearch(ll, new
>> Integer(5));
>> >                 int index8 = Collections.binarySearch(ll, new
>> Integer(8));
>> >                 int index3 = Collections.binarySearch(ll, new
>> Integer(3));
>> >                 int index4 = Collections.binarySearch(ll, new
>> Integer(4));
>> >                 System.out.println(ll);
>> >                 System.out.println("5 is in index " + index5);
>> >                 System.out.println("8 is in index " + index8);
>> >                 System.out.println("3 is in index " + index3);
>> >                 System.out.println("4 is in index " + index4);
>> >
>> >         }
>> >
>> > }
>> >
>> > Output is:
>> > -------------------------------
>> > [5, 8, 3, 4]
>> > 5 is in index 0
>> > 8 is in index 1
>> > 3 is in index -1
>> > 4 is in index -1
>> >
>> > Instead of using the LinkedList, I have also tried it with ArrayList,
>> > same result.
>> >
>> > Questions: why is 3 or 4 returns -1 in the index?  Thx.
>> You should sort the collection, that is the LinkedList, before
>> applying binarySearch on it, because binarySearch operates on a sorted
>> list, and adding multiple objects to a LinkedList does not preserve
>> the natural order.
>>
>> Just add:
>> Collections.sort(ll);
>> before the first line of int indexx = Collections.binarySearch(...);
>>
>> Then you should get the following output:
>>
>> [3, 4, 5, 8]
>> 5 is in index 2
>> 8 is in index 3
>> 3 is in index 0
>> 4 is in index 1
>>
>> Michèle Garoche
>>
>> --
>> To post to this group, send email to
>> javaprogrammingwithpassion@googlegroups.com
>> To unsubscribe from this group, send email to
>> javaprogrammingwithpassion+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/javaprogrammingwithpassion?hl=en
>>
>
>  --
> To post to this group, send email to
> javaprogrammingwithpassion@googlegroups.com
> To unsubscribe from this group, send email to
> javaprogrammingwithpassion+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/javaprogrammingwithpassion?hl=en
>

-- 
To post to this group, send email to javaprogrammingwithpassion@googlegroups.com
To unsubscribe from this group, send email to 
javaprogrammingwithpassion+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/javaprogrammingwithpassion?hl=en

Reply via email to