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