2013-04-26 94 views
1

我想在ArrayList中进行二进制搜索,但binarySearch方法不适用于Long,以及Double和Float。我的代码是如何在java ArrayList <Long>中进行二进制搜索?

import java.util.*; 

public class BinarySearchInArrayList 
{ 
    public static void main(String[]args) 
    { 
     ArrayList<Long> ar = new ArrayList(); 

     for(long l = 1;l<100000;l++) 
     { 
      ar.add(l); 
     } 

     System.out.println("arraylist: "+ar); 
     System.out.println("Which number's index do you want to know? "); 
     Scanner scan = new Scanner(System.in); 
     int p = scan.nextInt(); 
     int index = Collections.binarySearch(ar,p); 
     System.out.println("number "+p+" has index "+index); 
    } 

当我使用的,而不是Long整数,它工作正常,但我想用Long做出来。你能帮我吗?

回答

6
int p = scan.nextInt(); 
int index = Collections.binarySearch(ar,p); 

上面应该是:

long index = Collections.binarySearch(ar,p); 
long p = scan.nextLong(); 
+0

是的!而已!非常感谢。 – marek 2013-04-26 13:23:51

+0

@marek如果它解决了你的问题,你可以接受这个答案。 – 2013-04-26 13:24:36