如题:例如有一个整形数组:int a={1,2,3,4,5,6,7}, 我想判断数组a中是否存在数值2,不想用List的contains方法,因为它必须先add一个对象,但这里只是一个数值,不是对象,有没有自带的方法进行判断的呀?谢谢了!
解决方案 »
- IOException异常小问题,在线等
- java swing setSelectedIcon 问题
- 工具的选择..(菜鸟哦)
- invoke问题,调用时总说java.lang.IllegalArgumentException: object is not an instance of declaring class
- 一个关于getGraphics()的问题 急!
- java.util.ResourceBundle是做什么的?
- 有个线程的例子和预期的不一样,大家看看
- java 用什么IDE比较好些??最初级的应该选用哪个??
- 在一个普通的java class中如何运行ie?(假设本地机上有ie浏览器)
- java简单程序不能运行的问题。请各位指点迷津。
- 关于数组的知识,希望大虾指教
- ibatis
或者你就遍历一下整个数组,然后用2和每个数比较
用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,则不存在
if(al.contains(2)){
//do something
}else{
//do something
}
下面是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
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.
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 }
}整合下
这个方法太多了,循环, Arrays的API,List,Map,等等