如题:例如有一个整形数组:int a={1,2,3,4,5,6,7},  我想判断数组a中是否存在数值2,不想用List的contains方法,因为它必须先add一个对象,但这里只是一个数值,不是对象,有没有自带的方法进行判断的呀?谢谢了!

解决方案 »

  1.   

    就使用list的contains方法,用一下封装类,将整数封装一下,然后调用contains方法
    或者你就遍历一下整个数组,然后用2和每个数比较
      

  2.   

    也就是说先把int[] a 中的每个值封装到一个List temp类中,然后判断temp.contains(new Integer(2))?要是这个数组很大,会不会占用很大的内存呀?这样效率高吗?有没有比较简便的方法呢?
      

  3.   

    也就是说先把int[] a 中的每个值封装到一个List temp类中,然后判断temp.contains(new Integer(2))?要是这个数组很大,会不会占用很大的内存呀?这样效率高吗?有没有比较简便的方法呢?
      

  4.   

    其实不用那么麻烦的
    用Arrays类的方法可以简单的实现楼主的需要import java.util.Arrays;public class Test_Array1 { public static void main(String[] args) {
    // TODO Auto-generated method stub

    int[] test = {1,6,3,8,9,2,5};
    Arrays.sort(test); //首先对数组排序
    int result = Arrays.binarySearch(test, 5); //在数组中搜索是否含有5
    System.out.println(result); //这里的结果是 3  }
    }
    说明一下result的值的问题
    为什么搜索5,然后得出来的结果是3呢
    首先,经排序,数组变成
    1,2,3,5,6,8,9当你搜索5的时候
    是存在于数组的,就返回了5的索引即3
    如果不存在,则会返回一个负数所以,说明,如果返回值>=0,则存在
    返回值<0,则不存在
      

  5.   

    binarySearch()方法返回的是插入位置,不是负数,所以还得对判断,result是不是大于a.length-1,a[result]是不是你要找的元素.
      

  6.   

    如果用List.这样用:ArrayList<Integer> al=Arrays.asList(a);
    if(al.contains(2)){
    //do something
    }else{
    //do something
    }
      

  7.   


    下面是java6 API中的解释
    binarySearch
    public static int binarySearch(int[] a,
                                   int key).Returns:
    index of the search key, if it is contained in the array; otherwise, (-(insertion point) - 1). .Note that this guarantees that the return value will be >= 0 if and only if the key is found以上可以充分证明如果找到的话值将大于等于0
      

  8.   

    public static int binarySearch(int[] a, int key) {
    int low = 0;
    int high = a.length-1; while (low <= high) {
        int mid = (low + high) >> 1;
        int midVal = a[mid];     if (midVal < key)
    low = mid + 1;
        else if (midVal > key)
    high = mid - 1;
        else
    return mid; // key found
    }
    return -(low + 1);  // key not found.
        }返回值不会大于a.length-1,因为mid<=high的初值a.length-1.
    如果找不到会返回负数的,因为low>=0.
      

  9.   


    import java.util.Arrays;public class Test_Array1 {    public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            int[] test = {1,6,3,8,9,2,5};
            Arrays.sort(test); //首先对数组排序
            int result = Arrays.binarySearch(test, 5); //在数组中搜索是否含有5
            System.out.println(result>=0&&result<test.length()); //这里的结果是 3     }
    }整合下
      

  10.   

    封装成INTEGER查和直接2分查找哪个效率更高呢?
      

  11.   

    应该是直接2分快
    这个方法太多了,循环, Arrays的API,List,Map,等等
      

  12.   

    Google 下  binarySearch 用法 就会明白了
      

  13.   

    把数组转化成String类型的,再用 indexvalueof("2");方法```