java.util.Arrays类
JDK提供的java.util.Arrays类,包含了常用的数组操作,方便我们日常开发。Arrays类包含了:排序,查找,填充,打印内容等常见的操作
打印数组
System.out.println(a); // 打印数组引用的值;
System.out.println(Arrays.toString(a)); // 打印数组元素的值;
}
测试素组存储表格数据
public static void main(String[] args) {
Object[] a1= {"测试",2020-9-19};
Object[] a2= {"测试1",2020-9-18};
Object[] a3= {"测试2",2020-9-17};
Object[][] tab=new Object[3][];
tab[0]=a1;
tab[1]=a2;
tab[2]=a3;
for(Object[] temp:tab) {
System.out.println(Arrays.toString(temp));
}
}
数组的排序
public static void main(String[] args) {
int[] a= {10,20,30};
System.out.println(a);
/*Arrays.toString()方法表示返回指定数组的内容的字符串表示形式*/
System.out.println(Arrays.toString(a));
int[] b= {100,80,129,301,58,90};
/*Arrays.sort方法表示按照数字顺序排列指定的数组*/
Arrays.sort(b);
System.out.println(Arrays.toString(b));
/*Arrays.binarySearch方法表示使用二叉搜索算法搜索指定的int数组的指定值*/
System.out.println("元素索引:"+Arrays.binarySearch(b, 129));
int[] c= {12,23,4,5,67,78,9,};
Arrays.fill(c, 1, 4, 100);
/*Arrays.fill将指定的int值分配给指定的int数组的指定范围的每个元素*/
System.out.println(Arrays.toString(c));
}
2维数组
public static void main(String[] args) {
/*定义一个二维数组*/
int[][] a=new int[3][];
/*初始化数组*/
a[0]=new int[] {20,30};
a[1]=new int[] {19,30,40};
a[2]=new int[] {10,50};
/*打印a1数组的下标为2的数组*/
System.out.println(a[1][2]);
//编译:40
/*静态初始化二维数组*/
int[][] b= {
{10,20,30},
{40,50,60},
{70,80,90}
};
System.out.println(b[1][0]);
//编译:40
}
二分法查找
public static void main(String[] args) {
int[] arr = { 30,20,50,10,80,9,7,12,100,40,8};
int searchWord = 20; // 所要查找的数
Arrays.sort(arr); //二分法查找之前,一定要对数组元素排序
System.out.println(Arrays.toString(arr));
System.out.println(searchWord+"元素的索引:"+binarySearch(arr,searchWord));
}
public static int binarySearch(int[] array, int value){
int low = 0;
int high = array.length - 1;
while(low <= high){
int middle = (low + high) / 2;
if(value == array[middle]){
return middle; //返回查询到的索引位置
}
if(value > array[middle]){
low = middle + 1;
}
if(value < array[middle]){
high = middle - 1;
}
}
return -1; //上面循环完毕,说明未找到,返回-1
}